ChristopherJKoen's picture
Add page template system and UI
25058c7
from __future__ import annotations
from typing import Dict, List, Optional
from pydantic import BaseModel, Field
class FileMeta(BaseModel):
id: str
name: str
size: int
content_type: str
category: str
url: Optional[str] = None
class Heading(BaseModel):
number: str = ""
name: str = ""
class PageTemplateDefinition(BaseModel):
id: str
name: str
description: str = ""
blank: bool = False
variant: str = "full"
photo_layout: str = "auto"
source: str = "custom"
class SessionResponse(BaseModel):
id: str
status: str
created_at: str
updated_at: str
document_no: str
inspection_date: str
uploads: Dict[str, List[FileMeta]] = Field(default_factory=dict)
selected_photo_ids: List[str] = Field(default_factory=list)
page_count: int = 0
headings: List[Heading] = Field(default_factory=list)
jobsheet_sections: List["JobsheetSection"] = Field(default_factory=list)
page_templates: List[PageTemplateDefinition] = Field(default_factory=list)
class SessionStatusResponse(BaseModel):
id: str
status: str
updated_at: str
class SelectionRequest(BaseModel):
selected_photo_ids: List[str] = Field(default_factory=list)
class PagesResponse(BaseModel):
pages: List[dict] = Field(default_factory=list)
class PagesRequest(BaseModel):
pages: List[dict] = Field(default_factory=list)
class JobsheetSection(BaseModel):
id: str
title: Optional[str] = None
pages: List[dict] = Field(default_factory=list)
class SectionsResponse(BaseModel):
sections: List[JobsheetSection] = Field(default_factory=list)
class SectionsRequest(BaseModel):
sections: List[JobsheetSection] = Field(default_factory=list)
class HeadingsRequest(BaseModel):
headings: List[Heading] = Field(default_factory=list)
class HeadingsResponse(BaseModel):
headings: List[Heading] = Field(default_factory=list)
class PageTemplatesRequest(BaseModel):
page_templates: List[PageTemplateDefinition] = Field(default_factory=list)
class PageTemplatesResponse(BaseModel):
page_templates: List[PageTemplateDefinition] = Field(default_factory=list)