federation/user/models/user.py
2021-04-18 20:29:23 +02:00

41 lines
939 B
Python

from typing import Optional
from uuid import uuid4
from pydantic import BaseModel, Field, validator
class User(BaseModel):
id: str = Field(default_factory=uuid4)
name: str = "John"
@property
def email(self) -> str:
return f"{self.name.lower().replace(' ', '_')}@mail.com"
FORBIDDEN_NAMES = ["joe dalton"]
class UserInput(BaseModel):
name: str
class Config:
anystr_strip_whitespace = True
@validator("name")
def name_must_contain_space(cls, name: str) -> str:
if " " not in name:
raise ValueError("must contain a space")
return name.title()
@validator("name")
def name_must_not_be(cls, name: str) -> str:
if name in FORBIDDEN_NAMES:
raise ValueError("This name is forbidden")
return name
class UserResponse(BaseModel):
success: bool = True
errorMessage: Optional[str] = None
user: Optional[User] = None