mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
96 lines
3 KiB
Python
96 lines
3 KiB
Python
from __future__ import annotations
|
|
|
|
import enum
|
|
from typing import ClassVar, Optional
|
|
|
|
from sqlalchemy import TIMESTAMP, BigInteger, Column, Text
|
|
from sqlalchemy import Enum as SqlEnum
|
|
from sqlmodel import Field, SQLModel
|
|
|
|
|
|
class FileTypeEnum(enum.Enum):
|
|
PHOTO_PACK = "photo_pack"
|
|
SITE_NOTE = "site_note"
|
|
RD_SAP_SITE_NOTE = "rd_sap_site_note"
|
|
PAS_2023_VENTILATION = "pas_2023_ventilation"
|
|
PAS_2023_CONDITION = "pas_2023_condition"
|
|
PAS_SIGNIFICANCE = "pas_significance"
|
|
PAR_PHOTO_PACK = "par_photo_pack"
|
|
PAS_2023_PROPERTY = "pas_2023_property"
|
|
PAS_2023_OCCUPANCY = "pas_2023_occupancy"
|
|
ECMK_SITE_NOTE = "ecmk_site_note"
|
|
ECMK_RD_SAP_SITE_NOTE = "ecmk_rd_sap_site_note"
|
|
ECMK_SURVEY_XML = "ecmk_survey_xml"
|
|
MAGIC_PLAN_JSON = "magic_plan_json"
|
|
IMPROVEMENT_OPTION_EVALUATION = "improvement_option_evaluation"
|
|
MEDIUM_TERM_IMPROVEMENT_PLAN = "medium_term_improvement_plan"
|
|
RETROFIT_DESIGN_DOC = "retrofit_design_doc"
|
|
MCS_COMPLIANCE_CERTIFICATE = "mcs_compliance_certificate"
|
|
OTHER = "other"
|
|
VENTILATION_AUDIT = "ventilation_audit"
|
|
|
|
|
|
class FileSourceEnum(enum.Enum):
|
|
PAS_HUB = "pas hub"
|
|
COORDINATION_HUB = "coordination_hub"
|
|
SHAREPOINT = "sharepoint"
|
|
HUBSPOT = "hubspot"
|
|
ECMK = "ecmk"
|
|
MAGIC_PLAN = "magic_plan"
|
|
AUDIT_GENERATOR = "audit_generator"
|
|
|
|
|
|
def _enum_values(enum_cls: type[enum.Enum]) -> list[str]:
|
|
return [e.value for e in enum_cls]
|
|
|
|
|
|
class UploadedFile(SQLModel, table=True):
|
|
__tablename__: ClassVar[str] = "uploaded_files" # pyright: ignore[reportIncompatibleVariableOverride]
|
|
|
|
id: Optional[int] = Field(
|
|
default=None,
|
|
sa_column=Column(BigInteger, primary_key=True, autoincrement=True),
|
|
)
|
|
s3_file_bucket: str = Field(sa_column=Column(Text, nullable=False))
|
|
s3_file_key: str = Field(sa_column=Column(Text, nullable=False))
|
|
s3_upload_timestamp: object = Field(
|
|
sa_column=Column(TIMESTAMP(timezone=True), nullable=False)
|
|
)
|
|
|
|
landlord_property_id: Optional[str] = Field(
|
|
default=None, sa_column=Column(Text, nullable=True)
|
|
)
|
|
uprn: Optional[int] = Field(
|
|
default=None, sa_column=Column(BigInteger, nullable=True)
|
|
)
|
|
hubspot_listing_id: Optional[int] = Field(
|
|
default=None, sa_column=Column(BigInteger, nullable=True)
|
|
)
|
|
hubspot_deal_id: Optional[str] = Field(
|
|
default=None, sa_column=Column(Text, nullable=True)
|
|
)
|
|
|
|
file_type: Optional[str] = Field(
|
|
default=None,
|
|
sa_column=Column(
|
|
SqlEnum(
|
|
FileTypeEnum,
|
|
name="file_type",
|
|
create_type=False,
|
|
values_callable=_enum_values,
|
|
),
|
|
nullable=True,
|
|
),
|
|
)
|
|
file_source: Optional[str] = Field(
|
|
default=None,
|
|
sa_column=Column(
|
|
SqlEnum(
|
|
FileSourceEnum,
|
|
name="file_source",
|
|
create_type=False,
|
|
values_callable=_enum_values,
|
|
),
|
|
nullable=True,
|
|
),
|
|
)
|