Use Enum for request statuses
This commit is contained in:
@@ -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
|
||||
|
||||
|
@@ -24,3 +24,4 @@ class Request(Base):
|
||||
|
||||
def set_status(self, status):
|
||||
self.status_events.append(status)
|
||||
|
||||
|
@@ -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")
|
||||
|
Reference in New Issue
Block a user