first chapter

This commit is contained in:
marys
2025-08-21 14:31:47 +02:00
parent 9fb5ca2110
commit 8502d81972
4 changed files with 76 additions and 21 deletions

9
models/address.py Normal file
View File

@@ -0,0 +1,9 @@
from __future__ import annotations
from pydantic import BaseModel
class Address(BaseModel):
street: str
house_number: int | str
city: str

18
models/character.py Normal file
View File

@@ -0,0 +1,18 @@
from __future__ import annotations
from pydantic import BaseModel
from models.address import Address
from models.user import User, UserFieldValidator
class CharacterModel(BaseModel):
role: str
user: User
address: Address
class CharacterModelOptionalAddress(BaseModel):
role: str
user: UserFieldValidator
address: Address | None = None

View File

@@ -1,7 +1,7 @@
from __future__ import annotations
from typing import Union, Optional
from pydantic import BaseModel, PositiveInt, field_validator, Field
from pydantic import BaseModel, PositiveInt, field_validator, Field, ValidationError
class User(BaseModel):
@@ -38,24 +38,28 @@ class UserPositiveInt(BaseModel):
class UserFieldValidator(BaseModel):
name: str
surname: str
age: PositiveInt | None
age: int | None
registered: bool = False
@field_validator("age")
def validate_age(cls, value):
if value < 0:
raise ValidationError("age must be positive")
if value < 18:
raise ValueError("age must be at least 18")
raise ValidationError("age must be at least 18")
return value
class UserMaxLength(BaseModel):
name: str = Field(..., max_length=10)
surname: str = Field(..., max_length=10)
age: PositiveInt | None
surname: str = Field(..., max_length=12)
age: int | None
registered: bool = False
@field_validator("age")
def check_age(cls, value):
if value < 0:
raise ValidationError("age must be positive")
if value < 18:
raise ValueError("You are too young to register")
return value