From: Simo Sorce Date: Thu, 2 Oct 2014 23:51:34 +0000 (-0400) Subject: Make Transaction code more robust X-Git-Tag: v0.3.0~79 X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fipsilon.git;a=commitdiff_plain;h=99a8dce084c178ad9d1c46aa6b8e8d1def76e754 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 Reviewed-by: Patrick Uiterwijk --- 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)