author | ymh <ymh.work@gmail.com> |
Mon, 20 Oct 2014 01:31:33 +0200 | |
changeset 43 | e27c3c1c57f1 |
parent 42 | 926f0426ce78 |
child 78 | 37bb8e326446 |
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 |
||
43
e27c3c1c57f1
end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents:
42
diff
changeset
|
11 |
from sqlalchemy import (Column, Integer, String, DateTime, Text, Table, Index, |
e27c3c1c57f1
end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents:
42
diff
changeset
|
12 |
text, ForeignKey, Boolean) |
42
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
13 |
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
|
14 |
from sqlalchemy.sql import func |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
15 |
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
|
16 |
|
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
17 |
from database import Base, engine |
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 |
|
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
20 |
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
|
21 |
__tablename__ = 'annotation' |
22
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
22 |
|
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
23 |
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
|
24 |
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
|
25 |
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
|
26 |
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
|
27 |
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
|
28 |
channel = Column(String(255), nullable=False) |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
29 |
content = Column(JSON) |
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
30 |
|
42
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_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
|
32 |
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
|
33 |
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
|
34 |
|
0 | 35 |
|
36 |
def insert_annot_async(params, conn): |
|
37 |
||
38 |
content = params.get('content', {}) |
|
39 |
if not isinstance(content, basestring): |
|
40 |
params['content'] = json.dumps(content) |
|
41 |
if 'uuid' not in params: |
|
42 |
params['uuid'] = uuid.uuid4() |
|
43 |
||
44 |
if 'ts' not in params: |
|
45 |
params['ts'] = datetime.utcnow() |
|
46 |
||
22
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
47 |
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
|
48 |
|
986ee928a866
add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents:
0
diff
changeset
|
49 |
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
|
50 |
defer.addCallback(lambda _: stmt.params) |
0 | 51 |
|
52 |
return defer |
|
42
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 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
55 |
class Event(Base): |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
56 |
__tablename__ = 'event' |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
57 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
58 |
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
|
59 |
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
|
60 |
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
|
61 |
description = Column(Text(), nullable=True) |
43
e27c3c1c57f1
end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents:
42
diff
changeset
|
62 |
start_date = Column(DateTime(), nullable=True) |
e27c3c1c57f1
end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents:
42
diff
changeset
|
63 |
active = Column(Boolean(), nullable=False, default=True, server_default='1') |
42
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
64 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
65 |
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
|
66 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
67 |
def __unicode__(self): |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
68 |
return self.code |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
69 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
70 |
Index('idx_event_code', Event.code) |
43
e27c3c1c57f1
end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents:
42
diff
changeset
|
71 |
Index('idx_event_active', Event.active) |
e27c3c1c57f1
end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents:
42
diff
changeset
|
72 |
Index('idx_event_start_date', Event.start_date) |
42
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
73 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
74 |
class EventSession(Base): |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
75 |
__tablename__ = 'event_session' |
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
76 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
77 |
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
|
78 |
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
|
79 |
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
|
80 |
order = Column(Integer, nullable=False, default=0) |
43
e27c3c1c57f1
end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents:
42
diff
changeset
|
81 |
start_ts = Column(DateTime(timezone=True), nullable=True) |
e27c3c1c57f1
end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents:
42
diff
changeset
|
82 |
duration = Column(Integer, nullable=True) |
42
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
83 |
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
|
84 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
85 |
|
926f0426ce78
add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents:
22
diff
changeset
|
86 |
Index('idx_event_session_order', EventSession.order) |
43
e27c3c1c57f1
end of admin. change the index page and add a redirect to it on the landing page
ymh <ymh.work@gmail.com>
parents:
42
diff
changeset
|
87 |
Index('idx_event_session_start_ts', EventSession.start_ts) |