author | ymh <ymh.work@gmail.com> |
Sun, 19 Oct 2014 12:52:38 +0200 | |
changeset 42 | 926f0426ce78 |
parent 22 | 986ee928a866 |
child 43 | e27c3c1c57f1 |
permissions | -rw-r--r-- |
0 | 1 |
|
2 |
# |
|
3 |
# See LICENCE for detail |
|
4 |
# Copyright (c) 2014 IRI |
|
5 |
# |
|
6 |
||
7 |
import datetime |
|
8 |
import json |
|
9 |
import uuid |
|
10 |
||
42
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
11 |
from sqlalchemy import Column, Integer, String, DateTime, Text, Table, Index, text, ForeignKey |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
12 |
from sqlalchemy.orm import relationship, backref |
22
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
13 |
from sqlalchemy.sql import func |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
14 |
from sqlalchemy.dialects.postgresql import UUID, JSON |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
15 |
|
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
16 |
from database import Base, engine |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
17 |
|
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
18 |
|
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
19 |
class Annotation(Base): |
42
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
20 |
__tablename__ = 'annotation' |
22
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
21 |
|
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
22 |
id = Column(Integer, primary_key=True, nullable=False) |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
23 |
uuid = Column(UUID, unique=True, nullable=False) |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
24 |
created = Column(DateTime, nullable=False, server_default=text("(now() at time zone 'utc')") ) |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
25 |
ts = Column(DateTime(timezone=True), nullable=False) |
42
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
26 |
event_code = Column(String(255), ForeignKey('event.code'), nullable=False) |
22
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
27 |
channel = Column(String(255), nullable=False) |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
28 |
content = Column(JSON) |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
29 |
|
42
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
30 |
Index('idx_annotation_event', Annotation.event_code) |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
31 |
Index('idx_annotation_channel', Annotation.channel) |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
32 |
Index('idx_annotation_ts', Annotation.ts) |
22
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
33 |
|
0 | 34 |
|
35 |
def insert_annot_async(params, conn): |
|
36 |
||
37 |
content = params.get('content', {}) |
|
38 |
if not isinstance(content, basestring): |
|
39 |
params['content'] = json.dumps(content) |
|
40 |
if 'uuid' not in params: |
|
41 |
params['uuid'] = uuid.uuid4() |
|
42 |
||
43 |
if 'ts' not in params: |
|
44 |
params['ts'] = datetime.utcnow() |
|
45 |
||
22
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
46 |
stmt = Annotation.__table__.insert().values(**params).compile(engine) |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
47 |
|
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
48 |
defer = conn.runOperation(stmt.string, stmt.params) |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
49 |
defer.addCallback(lambda _: stmt.params) |
0 | 50 |
|
51 |
return defer |
|
42
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
52 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
53 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
54 |
class Event(Base): |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
55 |
__tablename__ = 'event' |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
56 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
57 |
id = Column(Integer, primary_key=True, nullable=False) |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
58 |
code = Column(String(255), unique=True, nullable=False) |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
59 |
label = Column(String(2048), nullable=False) |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
60 |
description = Column(Text(), nullable=True) |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
61 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
62 |
sessions = relationship("EventSession", order_by="EventSession.order", backref="event") |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
63 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
64 |
def __unicode__(self): |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
65 |
return self.code |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
66 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
67 |
Index('idx_event_code', Event.code) |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
68 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
69 |
class EventSession(Base): |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
70 |
__tablename__ = 'event_session' |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
71 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
72 |
id = Column(Integer, primary_key=True, nullable=False) |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
73 |
event_id = Column(Integer, ForeignKey(Event.id), nullable=False) |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
74 |
project_id = Column(String(2048), nullable=True) |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
75 |
order = Column(Integer, nullable=False, default=0) |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
76 |
categories_json = Column(JSON, nullable=True) |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
77 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
78 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
79 |
Index('idx_event_session_order', EventSession.order) |