STABLE: Final schema sync, optimized gitignore
This commit is contained in:
@@ -1,52 +1,25 @@
|
||||
# /opt/docker/dev/service_finder/backend/app/schemas/user.py
|
||||
from pydantic import BaseModel, EmailStr, field_validator, ConfigDict
|
||||
from typing import Optional
|
||||
from datetime import date
|
||||
|
||||
# Alap adatok, amik mindenhol kellenek
|
||||
class UserBase(BaseModel):
|
||||
email: EmailStr
|
||||
first_name: Optional[str] = None
|
||||
last_name: Optional[str] = None
|
||||
is_active: Optional[bool] = True
|
||||
is_superuser: bool = False
|
||||
is_active: bool = True
|
||||
region_code: str = "HU"
|
||||
|
||||
# --- REGISZTRÁCIÓ ---
|
||||
class UserRegister(UserBase):
|
||||
password: str
|
||||
birthday: Optional[date] = None
|
||||
is_company: bool = False
|
||||
company_name: Optional[str] = None
|
||||
tax_number: Optional[str] = None
|
||||
|
||||
@field_validator('email')
|
||||
@classmethod
|
||||
def block_temporary_emails(cls, v: str) -> str:
|
||||
blacklist = ['mailinator.com', '10minutemail.com', 'temp-mail.org', 'guerrillamail.com']
|
||||
domain = v.split('@')[-1].lower()
|
||||
if domain in blacklist:
|
||||
raise ValueError('Ideiglenes email szolgáltató nem engedélyezett!')
|
||||
return v
|
||||
|
||||
@field_validator('tax_number')
|
||||
@classmethod
|
||||
def validate_tax_id(cls, v: Optional[str], info) -> Optional[str]:
|
||||
if info.data.get('is_company') and (not v or len(v) < 8):
|
||||
raise ValueError('Cég esetén az adószám első 8 karaktere kötelező!')
|
||||
return v
|
||||
|
||||
# --- VÁLASZ (Ezt hiányolta a rendszer!) ---
|
||||
class UserResponse(UserBase):
|
||||
id: int
|
||||
is_company: bool
|
||||
company_name: Optional[str] = None
|
||||
|
||||
# Pydantic V2 konfiguráció az ORM (SQLAlchemy) támogatáshoz
|
||||
person_id: Optional[int] = None
|
||||
role: str
|
||||
subscription_plan: str
|
||||
scope_level: str
|
||||
scope_id: Optional[str] = None
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
# Frissítéshez használt séma
|
||||
class UserUpdate(BaseModel):
|
||||
password: Optional[str] = None
|
||||
first_name: Optional[str] = None
|
||||
last_name: Optional[str] = None
|
||||
email: Optional[EmailStr] = None
|
||||
preferred_language: Optional[str] = None
|
||||
Reference in New Issue
Block a user