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) |