From 8b9b55cef0af2f4ef603d3078fffe9950c6b7ec6 Mon Sep 17 00:00:00 2001 From: Oliver Hensby Date: Fri, 2 May 2025 14:27:05 +0100 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=A6=BA=20Add=20document=5Ftype=20to?= =?UTF-8?q?=20Document=20schema=20-=20This=20is=20linked=20to=20this=20[is?= =?UTF-8?q?sue](https://github.com/maxfordham/digital-schedules/issues/342?= =?UTF-8?q?)=20which=20will=20then=20be=20used=20to=20map=20to=20different?= =?UTF-8?q?=20PDF=20generations.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/document_issue/document.py | 23 +++++++++++++++++-- .../src/document_issue/enums.py | 8 +++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/packages/document-issue/src/document_issue/document.py b/packages/document-issue/src/document_issue/document.py index 651b8589..320b20f7 100644 --- a/packages/document-issue/src/document_issue/document.py +++ b/packages/document-issue/src/document_issue/document.py @@ -4,11 +4,11 @@ from typing import Annotated from annotated_types import Len -from pydantic import AliasChoices, Field, WithJsonSchema, field_validator +from pydantic import AliasChoices, Field, WithJsonSchema, field_validator, model_validator from typing_extensions import Literal from document_issue.basemodel import BaseModel -from document_issue.enums import DocSource, PaperSizeEnum, ScalesEnum +from document_issue.enums import DocSource, DocumentTypeEnum, PaperSizeEnum, ScalesEnum class FormatConfiguration(BaseModel): @@ -67,10 +67,17 @@ class DocumentBase(BaseModel): examples=DocSource._member_names_, alias="doc_source", ) + document_type: DocumentTypeEnum = Field( + DocumentTypeEnum.es, + description="type of document", + alias="doc_type", + title="Document Type", + ) paper_size: str | PaperSizeEnum = Field( "A4", description="paper size of the document", alias="size", + json_schema_extra={"disabled": True}, ) scale: str | ScalesEnum = Field( "nts", @@ -111,6 +118,18 @@ def validate_name_nomenclature(cls, v: str)-> str: li_nomenclature = [s.strip() for s in li_nomenclature] return "-".join(li_nomenclature) + @model_validator(mode="after") + def set_paper_size_based_on_document_type(self) -> DocumentBase: + """Set the paper size based on the document type.""" + if self.document_type == DocumentTypeEnum.es: + self.paper_size = PaperSizeEnum.A4 + elif self.document_type == DocumentTypeEnum.prs: + self.paper_size = PaperSizeEnum.A3 + elif self.document_type == DocumentTypeEnum.rds: + self.paper_size = PaperSizeEnum.A4 + else: + self.paper_size = PaperSizeEnum.na + return self class Document(DocumentBase): """Document model.""" diff --git a/packages/document-issue/src/document_issue/enums.py b/packages/document-issue/src/document_issue/enums.py index 77d78156..4b368219 100644 --- a/packages/document-issue/src/document_issue/enums.py +++ b/packages/document-issue/src/document_issue/enums.py @@ -64,5 +64,13 @@ class IssueFormatEnum(Enum): p = "paper - full size" r = "paper - reduced size" +class DocumentTypeEnum(str, Enum): + """maps DocumentType codes to string description.""" + + es: str = "Equipment Schedule" + rds: str = "Room Data Schedule" + prs: str = "Plantroom Schedule" + nzc: str = "Net-Zero Carbon Schedule" + From 2ee9c61d0cd785333d5d549b417cfd91e74e4964 Mon Sep 17 00:00:00 2001 From: Oliver Hensby Date: Fri, 2 May 2025 14:32:27 +0100 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=92=A1=20Comment=20out=20nzc=20enum?= =?UTF-8?q?=20value=20in=20DocumentTypeEnum=20We=20will=20implement=20this?= =?UTF-8?q?=20at=20a=20later=20date=20for=20the=20NZC=20metrics=20app?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/document-issue/src/document_issue/enums.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/document-issue/src/document_issue/enums.py b/packages/document-issue/src/document_issue/enums.py index 4b368219..b74ffb3b 100644 --- a/packages/document-issue/src/document_issue/enums.py +++ b/packages/document-issue/src/document_issue/enums.py @@ -70,7 +70,4 @@ class DocumentTypeEnum(str, Enum): es: str = "Equipment Schedule" rds: str = "Room Data Schedule" prs: str = "Plantroom Schedule" - nzc: str = "Net-Zero Carbon Schedule" - - - + # nzc: str = "Net-Zero Carbon Schedule" # TODO: Implement this in the future # noqa: ERA001