Use Enum for request statuses

This commit is contained in:
richard-dds
2018-08-07 16:41:47 -04:00
parent 0c9005aaf6
commit 49b9fca793
5 changed files with 25 additions and 26 deletions

View File

@@ -1,9 +1,9 @@
from enum import Enum
from sqlalchemy import exists, and_
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm.attributes import flag_modified
from atst.models import Request, RequestStatusEvent
from atst.models.request import Request
from atst.models.request_status_event import RequestStatusEvent, RequestStatus
from atst.database import db
from .exceptions import NotFoundError
@@ -27,13 +27,6 @@ def deep_merge(source, destination: dict):
return _deep_merge(source, dict(destination))
class RequestStatus(Enum):
STARTED = "started"
PENDING_FINANCIAL_VERIFICATION = "pending_financial_verification"
PENDING_CCPO_APPROVAL = "pending_ccpo_approval"
APPROVED = "approved"
class Requests(object):
AUTO_APPROVE_THRESHOLD = 1000000
@@ -118,7 +111,7 @@ class Requests(object):
@classmethod
def set_status(cls, request: Request, status: RequestStatus):
status_event = RequestStatusEvent(new_status=status.value)
status_event = RequestStatusEvent(new_status=status)
request.status_events.append(status_event)
return request

View File

@@ -24,3 +24,4 @@ class Request(Base):
def set_status(self, status):
self.status_events.append(status)

View File

@@ -1,5 +1,6 @@
from sqlalchemy import Column, func, ForeignKey
from sqlalchemy.types import DateTime, String, BigInteger
from enum import Enum, auto
from sqlalchemy import Column, func, ForeignKey, Enum as SQLAEnum
from sqlalchemy.types import DateTime, BigInteger
from sqlalchemy.schema import Sequence
from sqlalchemy.dialects.postgresql import UUID
@@ -7,11 +8,18 @@ from atst.models import Base
from atst.models.types import Id
class RequestStatus(Enum):
STARTED = auto()
PENDING_FINANCIAL_VERIFICATION = auto()
PENDING_CCPO_APPROVAL = auto()
APPROVED = auto()
class RequestStatusEvent(Base):
__tablename__ = "request_status_events"
id = Id()
new_status = Column(String())
new_status = Column(SQLAEnum(RequestStatus))
time_created = Column(DateTime(timezone=True), server_default=func.now())
request_id = Column(
UUID(as_uuid=True), ForeignKey("requests.id", ondelete="CASCADE")