summaryrefslogtreecommitdiffstats
path: root/ipsilon/util/trans.py
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2015-01-12 15:02:18 -0500
committerPatrick Uiterwijk <puiterwijk@redhat.com>2015-01-16 10:33:22 +0100
commitd6ffbfe04bc6b6370e3aa112e7bdd7183a851a94 (patch)
tree90079c515153765db4c827c41f3bc5bcc2ccf828 /ipsilon/util/trans.py
parent45cb73a21a90084818c3057e362ef9459f1600f3 (diff)
downloadipsilon.git-d6ffbfe04bc6b6370e3aa112e7bdd7183a851a94.tar.gz
ipsilon.git-d6ffbfe04bc6b6370e3aa112e7bdd7183a851a94.tar.xz
ipsilon.git-d6ffbfe04bc6b6370e3aa112e7bdd7183a851a94.zip
Use referer too as source of transaction IDs
This allows us to use apache module that use things like ErrorDocument directives to do internal redirects and still retain the original transaction intact. Signed-off-by: Simo Sorce <simo@redhat.com> Reviewed-by: Patrick Uiterwijk <puiterwijk@redhat.com>
Diffstat (limited to 'ipsilon/util/trans.py')
-rw-r--r--ipsilon/util/trans.py28
1 files changed, 23 insertions, 5 deletions
diff --git a/ipsilon/util/trans.py b/ipsilon/util/trans.py
index 8d4be14..5ac3e42 100644
--- a/ipsilon/util/trans.py
+++ b/ipsilon/util/trans.py
@@ -17,18 +17,36 @@ class Transaction(Log):
self.transaction_id = None
self._ts = TranStore()
self.cookie = None
+
+ # Backwards compat,
+ # if arguments are passed find or get new transaction
+ if kwargs:
+ self.find_tid(kwargs)
+ if not self.transaction_id:
+ self.create_tid()
+
+ def find_tid(self, kwargs):
tid = kwargs.get(TRANSID)
if tid:
+ # If more than one only pick the first
+ if isinstance(tid, list):
+ tid = tid[0]
self.transaction_id = tid
data = self.retrieve()
if data and 'provider' in data:
self.provider = data['provider']
self._get_cookie(data)
- else:
- data = {'provider': self.provider,
- 'origintime': str(datetime.now())}
- self.transaction_id = self._ts.new_unique_data(TRANSTABLE, data)
- self._set_cookie()
+ self.debug('Transaction: %s %s' % (self.provider,
+ self.transaction_id))
+ return tid
+
+ return None
+
+ def create_tid(self):
+ data = {'provider': self.provider,
+ 'origintime': str(datetime.now())}
+ self.transaction_id = self._ts.new_unique_data(TRANSTABLE, data)
+ self._set_cookie()
self.debug('Transaction: %s %s' % (self.provider,
self.transaction_id))