annot-server/models.py
changeset 43 e27c3c1c57f1
parent 42 926f0426ce78
child 78 37bb8e326446
equal deleted inserted replaced
42:926f0426ce78 43:e27c3c1c57f1
     6 
     6 
     7 import datetime
     7 import datetime
     8 import json
     8 import json
     9 import uuid
     9 import uuid
    10 
    10 
    11 from sqlalchemy import Column, Integer, String, DateTime, Text, Table, Index, text, ForeignKey
    11 from sqlalchemy import (Column, Integer, String, DateTime, Text, Table, Index,
       
    12                         text, ForeignKey, Boolean)
    12 from sqlalchemy.orm import relationship, backref
    13 from sqlalchemy.orm import relationship, backref
    13 from sqlalchemy.sql import func
    14 from sqlalchemy.sql import func
    14 from sqlalchemy.dialects.postgresql import UUID, JSON
    15 from sqlalchemy.dialects.postgresql import UUID, JSON
    15 
    16 
    16 from database import Base, engine
    17 from database import Base, engine
    56 
    57 
    57     id = Column(Integer, primary_key=True, nullable=False)
    58     id = Column(Integer, primary_key=True, nullable=False)
    58     code = Column(String(255), unique=True, nullable=False)
    59     code = Column(String(255), unique=True, nullable=False)
    59     label = Column(String(2048), nullable=False)
    60     label = Column(String(2048), nullable=False)
    60     description = Column(Text(), nullable=True)
    61     description = Column(Text(), nullable=True)
       
    62     start_date = Column(DateTime(), nullable=True)
       
    63     active = Column(Boolean(), nullable=False, default=True, server_default='1')
    61 
    64 
    62     sessions = relationship("EventSession", order_by="EventSession.order", backref="event")
    65     sessions = relationship("EventSession", order_by="EventSession.order", backref="event")
    63 
    66 
    64     def __unicode__(self):
    67     def __unicode__(self):
    65         return self.code
    68         return self.code
    66 
    69 
    67 Index('idx_event_code', Event.code)
    70 Index('idx_event_code', Event.code)
       
    71 Index('idx_event_active', Event.active)
       
    72 Index('idx_event_start_date', Event.start_date)
    68 
    73 
    69 class EventSession(Base):
    74 class EventSession(Base):
    70     __tablename__ = 'event_session'
    75     __tablename__ = 'event_session'
    71 
    76 
    72     id = Column(Integer, primary_key=True, nullable=False)
    77     id = Column(Integer, primary_key=True, nullable=False)
    73     event_id = Column(Integer, ForeignKey(Event.id), nullable=False)
    78     event_id = Column(Integer, ForeignKey(Event.id), nullable=False)
    74     project_id = Column(String(2048), nullable=True)
    79     project_id = Column(String(2048), nullable=True)
    75     order = Column(Integer, nullable=False, default=0)
    80     order = Column(Integer, nullable=False, default=0)
       
    81     start_ts = Column(DateTime(timezone=True), nullable=True)
       
    82     duration = Column(Integer, nullable=True)
    76     categories_json = Column(JSON, nullable=True)
    83     categories_json = Column(JSON, nullable=True)
    77 
    84 
    78 
    85 
    79 Index('idx_event_session_order', EventSession.order)
    86 Index('idx_event_session_order', EventSession.order)
       
    87 Index('idx_event_session_start_ts', EventSession.start_ts)