[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