Source code for timelink.kleio.schemas

# flake8: noqa: E741
from enum import Enum
from typing import Optional
from pydantic import BaseModel, Field
from datetime import datetime


[docs] class translation_status_enum(str, Enum): V = "V" # valid translations T = "T" # need translation (source more recent than translation) E = "E" # translation with errors W = "W" # translation with warnings P = "P" # translation being processed Q = "Q" # file queued for translation
[docs] class import_status_enum(str, Enum): I = "I" # imported E = "E" # imported with error W = "W" # imported with warnings no errors N = "N" # not imported U = "U" # translation updated need to reimport
[docs] class KleioFile(BaseModel): """Represents the information about a kleio file and its translation and import status""" path: str = Field(..., description="The path of the file") name: str = Field(..., description="The name of the file") size: int = Field(..., description="The size of the file in bytes") directory: str = Field(..., description="The directory containing the file") modified: datetime = Field(..., description="The last modified time of the file") modified_iso: datetime = Field( ..., description="The last modified time of the file in ISO format" ) modified_string: str = Field( ..., description="The last modified time of the file as a string" ) qtime: datetime = Field( ..., description="The time the file was queued for translation" ) qtime_string: str = Field( ..., description="The time the file was queued for translation as a string" ) source_url: str = Field(..., description="The URL of the source file") """The status of the file: .. code-block:: python V = "valid translations" T = "need translation (source more recent than translation)" E = "translation with errors" W = "translation with warnings" P = "translation being processed" Q = "file queued for translation" """ status: translation_status_enum = Field( ..., description="""The status of the file: V = valid translations T = need translation (source more recent than translation) E = translation with errors W = translation with warnings P = translation being processed Q = file queued for translation""", ) translated: Optional[datetime] = Field( None, description="The time the file was translated" ) translated_string: Optional[str] = Field( None, description="The time the file was translated as a string" ) errors: Optional[int] = Field( None, description="The number of errors encountered during translation" ) warnings: Optional[int] = Field( None, description="The number of warnings encountered during translation" ) version: Optional[str] = Field( None, description="The version of the kleio translator" ) rpt_url: Optional[str] = Field(None, description="The URL of the report file") xml_url: Optional[str] = Field(None, description="The URL of the XML file") import_status: Optional[import_status_enum] = Field( None, description="""The status of the file import: I = imported E = imported with error W = imported with warnings no errors N = not imported U = translation updated need to reimport""", ) import_errors: Optional[int] = Field( None, description="The number of errors encountered during import" ) import_warnings: Optional[int] = Field( None, description="The number of warnings encountered during import" ) import_error_rpt: Optional[str] = Field( None, description="Error report from import" ) import_warning_rpt: Optional[str] = Field( None, description="Warning report from import" ) imported: Optional[datetime] = Field(None, description="Date of import of the file") imported_string: Optional[str] = Field( None, description="Date of import of the file as a string" )
[docs] def needs_translation(self): """Return True if the file needs translation""" return self.status == translation_status_enum.T
[docs] def needs_import(self): """Return True if the file needs import A file needs import if it has not been imported before or if it has been translated again since the last import """ if self.import_status is None: raise ValueError( "import_status is None. Call TimelinkDatabase.get_import_status() first." ) return ( self.import_status == import_status_enum.N or self.import_status == import_status_enum.U )
[docs] class ApiPermissions(str, Enum): sources = "sources" kleioset = "kleioset" files = "files" structures = "structures" translations = "translations" upload = "upload" delete = "delete" mkdir = "mkdir" rmdir = "rmdir"
""" info = { "comment": "An user able to translate, upload and delete files, and also create and remove directories, in specific sub-directoris in kleio-home", "api": [ "sources", "kleioset", "files", "structures", "translations", "upload", "delete", "mkdir", "rmdir" ], "structures": "structures/reference_sources", "sources": "sources/reference_sources" } """
[docs] class TokenInfo(BaseModel): comment: str = Field(..., description="Comment") api: list[ApiPermissions] = Field(..., description="API permissions") structures: str = Field(..., description="Structures") sources: str = Field(..., description="Sources")