mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-02 16:44:05 -05:00
* extract user registration form into a composable * added base wizard component * added partial setup implementation * removed unused attrs * added setup bypass * made setup page more readable * add checkbox hints to autoform * added common settings pages and initial submit logic * bypass setup in demo * add full name to user registration * added fullname and pw handling to setup * fixed wizard indentation * added post-setup suggestions * added tests for backend changes * renamed Wizard to BaseWizard * lint fixes * pass hardcoded default password instead of backend nonsense * removed old test * fix e2e * added setup skip to e2e testing for all admin users --------- Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
from typing import Annotated
|
|
|
|
from pydantic import Field, StringConstraints, field_validator
|
|
from pydantic_core.core_schema import ValidationInfo
|
|
|
|
from mealie.schema._mealie import MealieModel
|
|
from mealie.schema._mealie.validators import validate_locale
|
|
|
|
|
|
class CreateUserRegistration(MealieModel):
|
|
group: str | None = None
|
|
group_token: Annotated[str | None, Field(validate_default=True)] = None
|
|
email: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)]
|
|
username: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)]
|
|
full_name: Annotated[str, StringConstraints(strip_whitespace=True)]
|
|
password: str
|
|
password_confirm: str
|
|
advanced: bool = False
|
|
private: bool = False
|
|
|
|
seed_data: bool = False
|
|
locale: str = "en-US"
|
|
|
|
@field_validator("locale")
|
|
def valid_locale(cls, v):
|
|
if not validate_locale(v):
|
|
raise ValueError("invalid locale")
|
|
return v
|
|
|
|
@field_validator("password_confirm")
|
|
@classmethod
|
|
def passwords_match(cls, value, info: ValidationInfo):
|
|
if "password" in info.data and value != info.data["password"]:
|
|
raise ValueError("passwords do not match")
|
|
return value
|
|
|
|
@field_validator("group_token")
|
|
@classmethod
|
|
def group_or_token(cls, value, info: ValidationInfo):
|
|
if not bool(value) and not bool(info.data["group"]):
|
|
raise ValueError("group or group_token must be provided")
|
|
|
|
return value
|