mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
new files types inferred from file names 🟪
This commit is contained in:
parent
b3a68a264a
commit
39c5fd5769
1 changed files with 44 additions and 27 deletions
|
|
@ -1,5 +1,5 @@
|
|||
from enum import Enum
|
||||
from typing import Optional
|
||||
from typing import Callable, Optional
|
||||
|
||||
from backend.app.db.models.uploaded_file import FileTypeEnum
|
||||
|
||||
|
|
@ -19,34 +19,51 @@ class CoreFiles(Enum):
|
|||
RETROFIT_DESIGN_DOC = "Retrofit Design Doc"
|
||||
|
||||
|
||||
CORE_TO_FILETYPE_MAP = {
|
||||
CoreFiles.PHOTOPACK: FileTypeEnum.PHOTO_PACK.value,
|
||||
CoreFiles.SITENOTE: FileTypeEnum.SITE_NOTE.value,
|
||||
CoreFiles.RDSAP_SITENOTE: FileTypeEnum.RD_SAP_SITE_NOTE.value,
|
||||
CoreFiles.PAS2023_VENTILATION: FileTypeEnum.PAS_2023_VENTILATION.value,
|
||||
CoreFiles.PAS2023_CONDITION: FileTypeEnum.PAS_2023_CONDITION.value,
|
||||
CoreFiles.PAS_SIGNIFICANCE: FileTypeEnum.PAS_SIGNIFICANCE.value,
|
||||
CoreFiles.PAR_PHOTOPACK: FileTypeEnum.PAR_PHOTO_PACK.value,
|
||||
CoreFiles.PAS2023_PROPERTY: FileTypeEnum.PAS_2023_PROPERTY.value,
|
||||
CoreFiles.PAS2023_OCCUPANCY: FileTypeEnum.PAS_2023_OCCUPANCY.value,
|
||||
CoreFiles.IMPROVEMENT_OPTION_EVALUATION: FileTypeEnum.IMPROVEMENT_OPTION_EVALUATION.value,
|
||||
CoreFiles.MEDIUM_TERM_IMPROVEMENT_PLAN: FileTypeEnum.MEDIUM_TERM_IMPROVEMENT_PLAN.value,
|
||||
CoreFiles.RETROFIT_DESIGN_DOC: FileTypeEnum.RETROFIT_DESIGN_DOC.value,
|
||||
}
|
||||
_MATCHERS: list[tuple[Callable[[str], bool], str]] = [
|
||||
(lambda f: f.startswith(CoreFiles.PHOTOPACK.value), FileTypeEnum.PHOTO_PACK.value),
|
||||
(lambda f: f.startswith(CoreFiles.SITENOTE.value), FileTypeEnum.SITE_NOTE.value),
|
||||
(
|
||||
lambda f: f.startswith(CoreFiles.RDSAP_SITENOTE.value),
|
||||
FileTypeEnum.RD_SAP_SITE_NOTE.value,
|
||||
),
|
||||
(
|
||||
lambda f: f.startswith(CoreFiles.PAS2023_VENTILATION.value),
|
||||
FileTypeEnum.PAS_2023_VENTILATION.value,
|
||||
),
|
||||
(
|
||||
lambda f: f.startswith(CoreFiles.PAS2023_CONDITION.value),
|
||||
FileTypeEnum.PAS_2023_CONDITION.value,
|
||||
),
|
||||
(
|
||||
lambda f: f.startswith(CoreFiles.PAS_SIGNIFICANCE.value),
|
||||
FileTypeEnum.PAS_SIGNIFICANCE.value,
|
||||
),
|
||||
(
|
||||
lambda f: f.startswith(CoreFiles.PAR_PHOTOPACK.value),
|
||||
FileTypeEnum.PAR_PHOTO_PACK.value,
|
||||
),
|
||||
(
|
||||
lambda f: f.startswith(CoreFiles.PAS2023_PROPERTY.value),
|
||||
FileTypeEnum.PAS_2023_PROPERTY.value,
|
||||
),
|
||||
(
|
||||
lambda f: f.startswith(CoreFiles.PAS2023_OCCUPANCY.value),
|
||||
FileTypeEnum.PAS_2023_OCCUPANCY.value,
|
||||
),
|
||||
(
|
||||
lambda f: CoreFiles.IMPROVEMENT_OPTION_EVALUATION.value in f,
|
||||
FileTypeEnum.IMPROVEMENT_OPTION_EVALUATION.value,
|
||||
),
|
||||
(
|
||||
lambda f: CoreFiles.MEDIUM_TERM_IMPROVEMENT_PLAN.value in f,
|
||||
FileTypeEnum.MEDIUM_TERM_IMPROVEMENT_PLAN.value,
|
||||
),
|
||||
(lambda f: "-OSM-" in f and "DR-N-A" in f, FileTypeEnum.RETROFIT_DESIGN_DOC.value),
|
||||
]
|
||||
|
||||
|
||||
def infer_file_type(filename: str) -> Optional[str]:
|
||||
for core_file, file_type in CORE_TO_FILETYPE_MAP.items():
|
||||
if filename.startswith(core_file.value):
|
||||
for matcher, file_type in _MATCHERS:
|
||||
if matcher(filename):
|
||||
return file_type
|
||||
|
||||
if CoreFiles.IMPROVEMENT_OPTION_EVALUATION.value in filename:
|
||||
return CORE_TO_FILETYPE_MAP[CoreFiles.IMPROVEMENT_OPTION_EVALUATION]
|
||||
|
||||
if CoreFiles.MEDIUM_TERM_IMPROVEMENT_PLAN.value in filename:
|
||||
return CORE_TO_FILETYPE_MAP[CoreFiles.MEDIUM_TERM_IMPROVEMENT_PLAN]
|
||||
|
||||
if "-OSM-" in filename and "DR-N-A" in filename:
|
||||
return CORE_TO_FILETYPE_MAP[CoreFiles.RETROFIT_DESIGN_DOC]
|
||||
|
||||
return None
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue