[open-ils-commits] r8401 -
branches/acq-experiment/Open-ILS/src/python/oils
svn at svn.open-ils.org
svn at svn.open-ils.org
Thu Jan 17 13:22:30 EST 2008
Author: erickson
Date: 2008-01-17 12:56:49 -0500 (Thu, 17 Jan 2008)
New Revision: 8401
Added:
branches/acq-experiment/Open-ILS/src/python/oils/event.py
Log:
porting into acq branch
Added: branches/acq-experiment/Open-ILS/src/python/oils/event.py
===================================================================
--- branches/acq-experiment/Open-ILS/src/python/oils/event.py (rev 0)
+++ branches/acq-experiment/Open-ILS/src/python/oils/event.py 2008-01-17 17:56:49 UTC (rev 8401)
@@ -0,0 +1,52 @@
+import osrf.ex
+
+class Event(object):
+ ''' Generic ILS event object '''
+
+
+ def __init__(self, evt_hash={}):
+ self.code = evt_hash.get('ilsevent') or -1
+ self.text_code = evt_hash.get('textcode') or ''
+ self.desc = evt_hash.get('desc') or ''
+ self.payload = evt_hash.get('payload') or None
+ self.debug = evt_hash.get('stacktrace') or ''
+ self.servertime = evt_hash.get('servertime') or ''
+
+ self.success = False
+ if self.code == int(0):
+ self.success = True
+
+ def __str__(self):
+ return '%s: %s:%s -> %s' % (
+ self.__class__.__name__, self.code, self.text_code, self.desc)
+
+ # XXX eventually, add events file parsing...
+
+ def to_ex(self):
+ return EventException(unicode(self))
+
+
+ @staticmethod
+ def parse_event(evt=None):
+ ''' If the provided evt object is a dictionary object that looks
+ like an ILS event, construct an Event object and return it.
+ Returns None otherwise. '''
+
+ if evt and 'ilsevent' in evt and 'textcode' in evt:
+ return Event(evt)
+
+ return None
+
+ @staticmethod
+ def parse_and_raise(evt=None):
+ ''' Parses with parse_event. If the resulting event is a non-success
+ event, it is converted to an exception and raised '''
+ evt = Event.parse_event(evt)
+ if evt and not evt.success:
+ raise evt.to_ex()
+
+
+class EventException(osrf.ex.OSRFException):
+ ''' A throw-able exception wrapper for events '''
+ pass
+
More information about the open-ils-commits
mailing list