44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
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
|