munch-ease-backend/shopping/models.py

48 lines
1.2 KiB
Python

from datetime import datetime
from enum import Enum
from typing import ClassVar, List, Optional
from pydantic import Field
from common import BaseLinkedModel
class ShoppingListItem(BaseLinkedModel):
KEYS: ClassVar[List[str]] = [
"id",
"ingredient_id",
"list_id",
"person_id",
"meal_id",
"recipe_id",
"created_date",
]
id: int = -1
list_id: Optional[int] = None
person_id: int = -1
ingredient_id: Optional[int] = None
recipe_id: Optional[int] = None
meal_id: Optional[int] = None
created_date: datetime = Field(default_factory=lambda: datetime.now().astimezone())
class StoreEnum(str, Enum):
woolworths = "woolworths"
coles = "coles"
home = ""
class ShoppingList(BaseLinkedModel):
KEYS: ClassVar[List[str]] = ["id", "created_date", "store_name"]
id: int = -1
created_date: datetime = Field(default_factory=lambda: datetime.now().astimezone())
store_name: StoreEnum = StoreEnum.home
purchased_by_id: int = -1
# Optional holder for outward mapping; any object with id/display_name is acceptable
purchased_by: Optional[object] = None
items: List[ShoppingListItem] = Field(default_factory=list)