prefix was missing from TenantUpdate, causing updates via Admin Portal to silently ignore the prefix value. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
73 lines
2.0 KiB
Python
73 lines
2.0 KiB
Python
from datetime import date, datetime
|
|
from typing import Optional
|
|
from pydantic import BaseModel, EmailStr
|
|
|
|
|
|
class TenantBase(BaseModel):
|
|
code: str
|
|
prefix: str = ""
|
|
name: str
|
|
name_eng: Optional[str] = None
|
|
tax_id: Optional[str] = None
|
|
domain: str
|
|
address: Optional[str] = None
|
|
tel: Optional[str] = None
|
|
contact: Optional[str] = None
|
|
contact_mobile: Optional[str] = None
|
|
contact_email: Optional[str] = None
|
|
keycloak_realm: Optional[str] = None
|
|
plan_code: Optional[str] = None
|
|
employee_limit: Optional[int] = None
|
|
trial_start_date: Optional[date] = None
|
|
trial_end_date: Optional[date] = None
|
|
quota_per_user: int = 20
|
|
total_quota: int = 200
|
|
is_manager: bool = False
|
|
is_active: bool = True
|
|
status: str = "trial"
|
|
note: Optional[str] = None
|
|
|
|
|
|
class TenantCreate(TenantBase):
|
|
pass
|
|
|
|
|
|
class TenantUpdate(BaseModel):
|
|
prefix: Optional[str] = None
|
|
name: Optional[str] = None
|
|
name_eng: Optional[str] = None
|
|
tax_id: Optional[str] = None
|
|
domain: Optional[str] = None
|
|
address: Optional[str] = None
|
|
tel: Optional[str] = None
|
|
contact: Optional[str] = None
|
|
contact_mobile: Optional[str] = None
|
|
contact_email: Optional[str] = None
|
|
plan_code: Optional[str] = None
|
|
employee_limit: Optional[int] = None
|
|
trial_start_date: Optional[date] = None
|
|
trial_end_date: Optional[date] = None
|
|
quota_per_user: Optional[int] = None
|
|
total_quota: Optional[int] = None
|
|
is_active: Optional[bool] = None
|
|
status: Optional[str] = None
|
|
note: Optional[str] = None
|
|
|
|
|
|
class TenantStatusLight(BaseModel):
|
|
sso_result: Optional[bool] = None
|
|
mailbox_result: Optional[bool] = None
|
|
nc_result: Optional[bool] = None
|
|
office_result: Optional[bool] = None
|
|
quota_usage: Optional[float] = None
|
|
|
|
|
|
class TenantResponse(TenantBase):
|
|
id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
lights: Optional[TenantStatusLight] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|