annot-server/baseserver.py
changeset 0 e1d4d7a8255a
child 31 2323ee3ad20f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/annot-server/baseserver.py	Wed Oct 08 15:14:58 2014 +0200
@@ -0,0 +1,37 @@
+
+#
+# See LICENCE for detail
+# Copyright (c) 2014 IRI
+#
+
+import copy
+import datetime
+import uuid
+import json
+
+from models import insert_annot_async
+
+class BaseProtocol(object) :
+
+    def _init_props(self, ws_factory, conn):
+        self.conn = conn
+        self.ws_factory = ws_factory
+
+
+    """
+    Mixin class to add helper methods
+    """
+    def process_annotation(self, params):
+
+        ts = params.setdefault('ts', datetime.datetime.utcnow())
+        uuid_val = params.setdefault('uuid', uuid.uuid4())
+
+        params_broadcast = copy.copy(params)
+        params_broadcast.update({ 'ts' : ts.isoformat()+'Z'})
+        params_broadcast['uuid'] = str(params_broadcast['uuid'])
+
+        #broadcast to websocket
+        self.ws_factory.broadcast(json.dumps(params_broadcast), params_broadcast)
+
+        #TODO treat errors
+        return insert_annot_async(params, self.conn)