Coverage for opt/mealie/lib/python3.12/site-packages/mealie/schema/admin/settings.py: 70%

21 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-07 03:04 +0000

1from typing import Annotated 

2 

3from pydantic import ConfigDict, Field, field_validator 

4from slugify import slugify 

5 

6from mealie.schema._mealie import MealieModel 

7 

8from ..recipe.recipe_category import RecipeCategoryResponse 

9 

10 

11class CustomPageBase(MealieModel): 

12 name: str 

13 slug: Annotated[str | None, Field(validate_default=True)] 

14 position: int 

15 categories: list[RecipeCategoryResponse] = [] 

16 model_config = ConfigDict(from_attributes=True) 

17 

18 @field_validator("slug", mode="before") 

19 def validate_slug(slug: str, values): 

20 name: str = values["name"] 

21 calc_slug: str = slugify(name) 

22 

23 if slug != calc_slug: 

24 slug = calc_slug 

25 

26 return slug 

27 

28 

29class CustomPageOut(CustomPageBase): 

30 id: int 

31 model_config = ConfigDict(from_attributes=True)