Add the command that registers to the SMO; Make the create registration and create...
[pti/o2.git] / o2common / domain / base.py
index dfd4b25..d7c94cd 100644 (file)
 \r
 from datetime import datetime\r
 from typing import List\r
+from sqlalchemy.inspection import inspect\r
+from sqlalchemy.exc import NoInspectionAvailable\r
+# from sqlalchemy.orm.exc import DetachedInstanceError\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
         self.createtime = datetime.now()\r
         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
+        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
+        return [m.serialize() for m in li]\r