Source code for rasenmaeher_api.web.api.instructions.schema

"""Instruction response schemas"""
from typing import Dict, Optional

from pydantic import BaseModel, Extra, Field
from libpvarki.schemas.product import UserInstructionFragment
from pydantic_collections import BaseCollectionModel


[docs] class AllProdcutsInstructionFragments(BaseModel): # pylint: disable=too-few-public-methods """Fragments for all products"""
[docs] fragments: Dict[str, Optional[UserInstructionFragment]] = Field( description="Instructions keyed by product short name, if fetching of fragment failed value for that product is null" # pylint: disable=C0301 )
[docs] class Config: # pylint: disable=too-few-public-methods """Example values for schema"""
[docs] extra = Extra.forbid
[docs] schema_extra = { "examples": [ { "fragments": { "tak": { "html": """<p class="hello">Hello World!</p>""", "inject_css": "http://example.com/mystyle.css", }, "nosuchproduct": None, } }, ], }
[docs] class ProductFile(BaseModel): # pylint: disable=too-few-public-methods """File description"""
[docs] title: str = Field(description="Title for the file")
[docs] filename: str = Field(description="file name")
[docs] data: str = Field(description="data-url for the file")
[docs] class Config: # pylint: disable=too-few-public-methods """Example values for schema"""
[docs] extra = Extra.forbid
[docs] class ProductFileList(BaseCollectionModel[ProductFile]): # type: ignore[misc] # pylint: disable=too-few-public-methods """List of files"""
[docs] class Config: # pylint: disable=too-few-public-methods """Pydantic configs"""
[docs] extra = Extra.forbid
[docs] class AllProdcutsInstructionFiles(BaseModel): # pylint: disable=too-few-public-methods """user files for all products"""
[docs] files: Dict[str, Optional[ProductFileList]] = Field( description="files keyed by product short name, if fetching failed value for that product is null" # pylint: disable=C0301 )
[docs] class Config: # pylint: disable=too-few-public-methods """Example values for schema"""
[docs] extra = Extra.forbid