annot-server/baseserver.py
author ymh <ymh.work@gmail.com>
Fri, 17 Apr 2015 15:20:46 +0200
changeset 165 7dfdafb88968
parent 32 dc1c745850d8
permissions -rw-r--r--
add ts_server
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
#
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
# See LICENCE for detail
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
# Copyright (c) 2014 IRI
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
#
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
import copy
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
import datetime
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
import uuid
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
import json
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
31
2323ee3ad20f improve timezone management
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    12
from dateutil.tz import tzutc
2323ee3ad20f improve timezone management
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    13
0
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
from models import insert_annot_async
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
class BaseProtocol(object) :
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
    def _init_props(self, ws_factory, conn):
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
        self.conn = conn
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
        self.ws_factory = ws_factory
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    """
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    Mixin class to add helper methods
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    """
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
    def process_annotation(self, params):
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
165
7dfdafb88968 add ts_server
ymh <ymh.work@gmail.com>
parents: 32
diff changeset
    28
        now = datetime.datetime.now(tzutc())
7dfdafb88968 add ts_server
ymh <ymh.work@gmail.com>
parents: 32
diff changeset
    29
        ts = params.setdefault('ts', now)
31
2323ee3ad20f improve timezone management
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    30
        if ts.tzinfo is None:
2323ee3ad20f improve timezone management
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    31
            ts = ts.replace(tzinfo=tzutc())
32
dc1c745850d8 small correction on timezone management
ymh <ymh.work@gmail.com>
parents: 31
diff changeset
    32
            params['ts'] = ts
0
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
        uuid_val = params.setdefault('uuid', uuid.uuid4())
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
        params_broadcast = copy.copy(params)
31
2323ee3ad20f improve timezone management
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    36
        params_broadcast.update({ 'ts' : ts.isoformat() })
165
7dfdafb88968 add ts_server
ymh <ymh.work@gmail.com>
parents: 32
diff changeset
    37
        params_broadcast['ts_server'] = now.isoformat()
0
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
        params_broadcast['uuid'] = str(params_broadcast['uuid'])
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
        #broadcast to websocket
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
        self.ws_factory.broadcast(json.dumps(params_broadcast), params_broadcast)
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
        #TODO treat errors
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
        return insert_annot_async(params, self.conn)