File size: 1,407 Bytes
8e1c132
 
 
a17ec0b
8e1c132
 
 
 
 
 
 
 
 
 
 
 
 
7a511fb
2aa3f0a
 
 
 
 
 
 
 
 
7a511fb
8e1c132
 
 
 
 
ef8c55b
8e1c132
 
 
aa5bf7c
7a511fb
 
 
2aa3f0a
9b0a6de
8e1c132
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from enum import Enum as PyEnum

from sqlalchemy import (
    Boolean,
    Column,
    DateTime,
    Enum,
    Float,
    ForeignKey,
    Integer,
    String,
    func,
)
from sqlalchemy.dialects.postgresql import UUID
from pydantic import BaseModel
from ._base import Base


class RFPStatus(PyEnum):
    ACTIVE = "ACTIVE"
    IN_PROGRESS = "IN_PROGRESS"
    NOT_YET_STARTED = "NOT_YET_STARTED"
    CUSTOMER_HOLD = "CUSTOMER_HOLD"
    UNSOLVED_ISSUES = "UNSOLVED_ISSUES"
    AWARDED = "AWARDED"
    PROTESTED = "PROTESTED"


class RFP(Base):
    __tablename__ = "rfps"

    id = Column(UUID(as_uuid=True), primary_key=True, nullable=False)
    rfp_number = Column(String, nullable=False)
    name = Column(String, nullable=False)
    received_proposals = Column(Integer, nullable=False)
    evaluated_count = Column(Integer, nullable=False)
    awaiting_evaluation = Column(Integer, nullable=False)
    target_award_date = Column(DateTime, nullable=True)
    ko_name = Column(String, nullable=True)
    award_type = Column(String, nullable=True)
    google_drive_id = Column(String, nullable=True)
    status = Column(Enum(RFPStatus), nullable=False)
    comparative_weights_locked = Column(Boolean(), nullable=True, default=False)
    created_at = Column(DateTime, nullable=False, default=func.now())
    updated_at = Column(
        DateTime, nullable=False, default=func.now(), onupdate=func.now()
    )