from __future__ import annotations import datetime from typing import ClassVar, List, Optional from pydantic import Field from common import ApiModel from ingredients import Ingredient from persons.models import Person class Recipe(ApiModel): KEYS: ClassVar[List[str]] = [ "id", "name", "link", "serves", "image_urls", "based_on_recipe", "created_by_id", "date_created", "hidden_by_id", "date_hidden", ] NON_INSERT_KEYS: ClassVar[List[str]] = ["id", "created_date", "hidden_by_id", "date_hidden"] id: int = -1 name: str link: str serves: int image_urls: List[str] = Field(default_factory=list) ingredients: List[Ingredient] = Field(default_factory=list) based_on_recipe: Optional[int] = None date_created: datetime.datetime = Field( default_factory=lambda: datetime.datetime.now().astimezone() ) created_by_id: int created_by: Optional[Person] = None date_hidden: Optional[datetime.datetime] = None hidden_by_id: Optional[int] = None hidden_by: Optional[Person] = None