Add models dir

This commit is contained in:
richard-dds 2018-07-23 14:44:59 -04:00 committed by dandds
parent 60ff20834b
commit 17a58fec21
4 changed files with 59 additions and 0 deletions

0
atst/models/__init__.py Normal file
View File

32
atst/models/request.py Normal file
View File

@ -0,0 +1,32 @@
from sqlalchemy import Column, func
from sqlalchemy.types import DateTime
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.orm import relationship
from requests_queue.models import Base
from requests_queue.models.types import Id
class Request(Base):
__tablename__ = 'requests'
id = Id()
creator = Column(UUID(as_uuid=True))
time_created = Column(DateTime(timezone=True), server_default=func.now())
body = Column(JSONB)
status_events = relationship('StatusEvent',
backref='request',
order_by='StatusEvent.sequence')
@property
def status(self):
return self.status_events[-1].new_status
@property
def action_required_by(self):
return {
"incomplete": "mission_owner",
"pending_submission": "mission_owner",
"submitted": "ccpo",
"approved": "mission_owner",
}.get(self.status)

View File

@ -0,0 +1,17 @@
from sqlalchemy import Column, func, ForeignKey
from sqlalchemy.types import DateTime, String, BigInteger
from sqlalchemy.schema import Sequence
from sqlalchemy.dialects.postgresql import UUID
from requests_queue.models import Base
from requests_queue.models.types import Id
class StatusEvent(Base):
__tablename__ = 'status_events'
id = Id()
new_status = Column(String())
time_created = Column(DateTime(timezone=True), server_default=func.now())
request_id = Column(UUID(as_uuid=True), ForeignKey('requests.id', ondelete='CASCADE'))
sequence = Column(BigInteger, Sequence('status_events_sequence_seq'), nullable=False)

10
atst/models/types.py Normal file
View File

@ -0,0 +1,10 @@
import sqlalchemy
from sqlalchemy import Column
from sqlalchemy.dialects.postgresql import UUID
def Id():
return Column(
UUID(as_uuid=True),
primary_key=True,
server_default=sqlalchemy.text("uuid_generate_v4()"))