Files
data-entry-app/backend/app/schemas/client_access.py
T

103 lines
2.1 KiB
Python
Raw Normal View History

2026-04-25 22:51:36 +12:00
from datetime import datetime
from pydantic import BaseModel
class ClientUserCreate(BaseModel):
client_account_id: int
full_name: str
email: str
role: str = "viewer"
status: str = "invited"
is_new_user: bool = True
class ClientUserUpdate(BaseModel):
full_name: str | None = None
email: str | None = None
role: str | None = None
status: str | None = None
is_new_user: bool | None = None
class ClientFeatureUpdate(BaseModel):
enabled: bool
class ClientUserModulePermissionUpdate(BaseModel):
access_level: str
2026-04-25 22:51:36 +12:00
class ClientUserRead(BaseModel):
id: int
client_account_id: int
full_name: str
email: str
role: str
status: str
is_new_user: bool
last_login_at: datetime | None
created_at: datetime
module_permissions: list["ClientUserModulePermissionRead"]
2026-04-25 22:51:36 +12:00
class ClientFeatureRead(BaseModel):
id: int
client_account_id: int
feature_key: str
feature_name: str
feature_group: str
description: str | None
enabled: bool
updated_at: datetime
created_at: datetime
class ClientUserModulePermissionRead(BaseModel):
id: int
client_account_id: int
client_user_id: int
module_key: str
module_name: str
module_group: str
description: str | None
access_level: str
updated_at: datetime
created_at: datetime
class ClientAccessAuditEventRead(BaseModel):
id: int
client_account_id: int
actor_type: str
actor_name: str
actor_email: str
actor_role: str
action: str
target_type: str
target_id: int | None
module_key: str | None
summary: str
created_at: datetime
2026-04-25 22:51:36 +12:00
class ClientAccessRead(BaseModel):
id: int
tenant_id: str
name: str
client_code: str
status: str
powerbi_workspace: str | None
notes: str | None
created_at: datetime
users: list[ClientUserRead]
features: list[ClientFeatureRead]
active_user_count: int
new_user_count: int
enabled_feature_count: int
total_feature_count: int
audit_history: list[ClientAccessAuditEventRead]
ClientUserRead.model_rebuild()