Add models dir
This commit is contained in:
parent
60ff20834b
commit
17a58fec21
0
atst/models/__init__.py
Normal file
0
atst/models/__init__.py
Normal file
32
atst/models/request.py
Normal file
32
atst/models/request.py
Normal 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)
|
17
atst/models/status_event.py
Normal file
17
atst/models/status_event.py
Normal 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
10
atst/models/types.py
Normal 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()"))
|
Loading…
x
Reference in New Issue
Block a user