36 lines
979 B
Python
36 lines
979 B
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
|
||
|
|
from recipes import Recipe
|
||
|
|
|
||
|
|
|
||
|
|
class MealRecipe(ApiModel):
|
||
|
|
meal_id: int
|
||
|
|
recipe_id: int
|
||
|
|
servings: float
|
||
|
|
|
||
|
|
recipe: Optional[Recipe] = None
|
||
|
|
|
||
|
|
|
||
|
|
class Meal(ApiModel):
|
||
|
|
KEYS: ClassVar[List[str]] = ["id", "suggested_date", "consumed_date", "purchase_date"]
|
||
|
|
id: int = -1
|
||
|
|
suggested_date: datetime.datetime
|
||
|
|
consumed_date: Optional[datetime.datetime] = None
|
||
|
|
|
||
|
|
chefs: List[Person] = Field(default_factory=list)
|
||
|
|
cleanup: List[Person] = Field(default_factory=list)
|
||
|
|
consumers: List[Person] = Field(default_factory=list)
|
||
|
|
recipes: List[MealRecipe] = Field(default_factory=list)
|
||
|
|
extra_ingredients: List[Ingredient] = Field(default_factory=list)
|
||
|
|
|
||
|
|
# Set from shopping list
|
||
|
|
purchase_date: Optional[datetime.datetime] = None
|