0
|
1 |
|
|
2 |
# |
|
3 |
# See LICENCE for detail |
|
4 |
# Copyright (c) 2014 IRI |
|
5 |
# |
|
6 |
|
|
7 |
import copy |
|
8 |
import datetime |
|
9 |
import uuid |
|
10 |
import json |
|
11 |
|
|
12 |
from models import insert_annot_async |
|
13 |
|
|
14 |
class BaseProtocol(object) : |
|
15 |
|
|
16 |
def _init_props(self, ws_factory, conn): |
|
17 |
self.conn = conn |
|
18 |
self.ws_factory = ws_factory |
|
19 |
|
|
20 |
|
|
21 |
""" |
|
22 |
Mixin class to add helper methods |
|
23 |
""" |
|
24 |
def process_annotation(self, params): |
|
25 |
|
|
26 |
ts = params.setdefault('ts', datetime.datetime.utcnow()) |
|
27 |
uuid_val = params.setdefault('uuid', uuid.uuid4()) |
|
28 |
|
|
29 |
params_broadcast = copy.copy(params) |
|
30 |
params_broadcast.update({ 'ts' : ts.isoformat()+'Z'}) |
|
31 |
params_broadcast['uuid'] = str(params_broadcast['uuid']) |
|
32 |
|
|
33 |
#broadcast to websocket |
|
34 |
self.ws_factory.broadcast(json.dumps(params_broadcast), params_broadcast) |
|
35 |
|
|
36 |
#TODO treat errors |
|
37 |
return insert_annot_async(params, self.conn) |