summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2014-10-02 19:51:34 -0400
committerPatrick Uiterwijk <puiterwijk@redhat.com>2014-10-06 19:53:33 +0200
commit99a8dce084c178ad9d1c46aa6b8e8d1def76e754 (patch)
treedc8e4f92e75d8554757d53865c2af9db05032d15
parent7605a4263263fb399176a0d9eea49ab7ecc81274 (diff)
downloadipsilon-99a8dce084c178ad9d1c46aa6b8e8d1def76e754.tar.gz
ipsilon-99a8dce084c178ad9d1c46aa6b8e8d1def76e754.tar.xz
ipsilon-99a8dce084c178ad9d1c46aa6b8e8d1def76e754.zip
Make Transaction code more robust
Avoid raising exceptions when transactions are not found, just return no cookies or empty dicts with no transactions in them. Signed-off-by: Simo Sorce <simo@redhat.com> Reviewed-by: Patrick Uiterwijk <puiterwijk@redhat.com>
-rwxr-xr-xipsilon/util/trans.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/ipsilon/util/trans.py b/ipsilon/util/trans.py
index 8208d4a..05d538e 100755
--- a/ipsilon/util/trans.py
+++ b/ipsilon/util/trans.py
@@ -25,7 +25,7 @@ class Transaction(Log):
data = self.retrieve()
if data and 'provider' in data:
self.provider = data['provider']
- self._get_cookie()
+ self._get_cookie(data)
else:
data = {'provider': self.provider,
'origintime': str(datetime.now())}
@@ -41,9 +41,10 @@ class Transaction(Log):
data = {self.transaction_id: cookiedata}
self._ts.save_unique_data(TRANSTABLE, data)
- def _get_cookie(self):
- data = self.retrieve()
- if 'cookie' not in data:
+ def _get_cookie(self, data=None):
+ if data is None:
+ data = self.retrieve()
+ if data is None or 'cookie' not in data:
raise ValueError('Cookie name not available')
self.cookie = SecureCookie(data['cookie'])
self.cookie.receive()
@@ -51,7 +52,8 @@ class Transaction(Log):
raise ValueError('Missing or invalid cookie')
def _del_cookie(self):
- self.cookie.delete()
+ if self.cookie:
+ self.cookie.delete()
def wipe(self):
if not self.transaction_id:
@@ -67,7 +69,7 @@ class Transaction(Log):
def retrieve(self):
data = self._ts.get_unique_data(TRANSTABLE,
uuidval=self.transaction_id)
- return data.get(self.transaction_id)
+ return data.get(self.transaction_id) or dict()
def get_GET_arg(self):
return "%s=%s" % (TRANSID, self.transaction_id)