Add subscription and notification for resource changes; fix a bug while pserver node...
[pti/o2.git] / o2common / domain / base.py
index 63d1659..130fdad 100644 (file)
 from datetime import datetime\r
 from typing import List\r
 from sqlalchemy.inspection import inspect\r
+from sqlalchemy.exc import NoInspectionAvailable\r
 from .events import Event\r
 \r
 \r
 class AgRoot:\r
 \r
+    events = []\r
+\r
     def __init__(self) -> None:\r
         self.hash = ""\r
         self.updatetime = datetime.now()\r
@@ -27,17 +30,23 @@ class AgRoot:
         self.events = []  # type: List[Event]\r
         # self.id = ""\r
 \r
+    # def append_event(self, event: Event):\r
+    #     self.events = self.events.append(event)\r
+\r
 \r
 class Serializer(object):\r
 \r
     def serialize(self):\r
-        # d = {c: getattr(self, c) for c in inspect(self).attrs.keys()}\r
-        # if 'createtime' in d:\r
-        #     d['createtime'] = d['createtime'].isoformat()\r
-        # if 'updatetime' in d:\r
-        #     d['updatetime'] = d['updatetime'].isoformat()\r
-        # return d\r
-        return {c: getattr(self, c) for c in inspect(self).attrs.keys()}\r
+        try:\r
+            # d = {c: getattr(self, c) for c in inspect(self).attrs.keys()}\r
+            # if 'createtime' in d:\r
+            #     d['createtime'] = d['createtime'].isoformat()\r
+            # if 'updatetime' in d:\r
+            #     d['updatetime'] = d['updatetime'].isoformat()\r
+            # return d\r
+            return {c: getattr(self, c) for c in inspect(self).attrs.keys()}\r
+        except NoInspectionAvailable:\r
+            return self.__dict__\r
 \r
     @staticmethod\r
     def serialize_list(li):\r