annot-server/models.py
author rougeronj
Thu, 22 Jan 2015 09:26:43 +0100
changeset 111 a7b72620d227
parent 78 37bb8e326446
permissions -rw-r--r--
Add variable "wait". When this variable set, the annotsroll wait ignore some annotations, and wait before printing an otherone so there is no superposition. Can be passed as an options
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 datetime
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
import json
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
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')") )
78
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents: 43
diff changeset
    26
    ts = Column(DateTime(timezone=True), nullable=False, index=True)
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents: 43
diff changeset
    27
    event_code = Column(String(255), ForeignKey('event.code'), nullable=False, index=True)
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents: 43
diff changeset
    28
    channel = Column(String(255), nullable=False, index=True)
22
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
0
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
def insert_annot_async(params, conn):
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
    content = params.get('content', {})
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
    if not isinstance(content, basestring):
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
        params['content'] = json.dumps(content)
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
    if 'uuid' not in params:
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
        params['uuid'] = uuid.uuid4()
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
    if 'ts' not in params:
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
        params['ts'] = datetime.utcnow()
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
22
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    43
    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
    44
986ee928a866 add sqlalchemy model + put create module for webapp
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    45
    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
    46
    defer.addCallback(lambda _: stmt.params)
0
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
e1d4d7a8255a First shareable version
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
    return defer
42
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    49
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    50
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    51
class Event(Base):
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    52
    __tablename__ = 'event'
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
    id = Column(Integer, primary_key=True, nullable=False)
78
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents: 43
diff changeset
    55
    code = Column(String(255), unique=True, nullable=False, index=True)
42
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    56
    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
    57
    description = Column(Text(), nullable=True)
78
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents: 43
diff changeset
    58
    start_date = Column(DateTime(), nullable=True, index=True)
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents: 43
diff changeset
    59
    active = Column(Boolean(), nullable=False, default=True, server_default='1', index=True)
42
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    60
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    61
    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
    62
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    63
    def __unicode__(self):
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    64
        return self.code
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    65
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    66
class EventSession(Base):
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    67
    __tablename__ = 'event_session'
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
    id = Column(Integer, primary_key=True, nullable=False)
78
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents: 43
diff changeset
    70
    uuid = Column(UUID, unique=True, nullable=False, default=uuid.uuid4)
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents: 43
diff changeset
    71
    label = Column(String(2048), nullable=True)
42
926f0426ce78 add event + event session + admin + category json management. Must rebuild database
ymh <ymh.work@gmail.com>
parents: 22
diff changeset
    72
    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
    73
    project_id = Column(String(2048), nullable=True)
78
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents: 43
diff changeset
    74
    order = Column(Integer, nullable=False, default=0, index=True)
37bb8e326446 add a lable ro eventsession + add alembic migration for older databases
ymh <ymh.work@gmail.com>
parents: 43
diff changeset
    75
    start_ts = Column(DateTime(timezone=True), nullable=True, index=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
    76
    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
    77
    categories_json = Column(JSON, nullable=True)