from typing import List, Optional
from lin import BaseModel, ParameterError
from pydantic import Field, validator
from app.schema import BasePageSchema, QueryPageSchema
from . import EmailSchema, GroupIdListSchema
class AdminGroupSchema(BaseModel):
id: int = Field(description="用户组ID")
info: str = Field(description="用户组信息")
name: str = Field(description="用户组名称")
class AdminGroupListSchema(BaseModel):
__root__: List[AdminGroupSchema]
class AdminUserSchema(EmailSchema):
id: int = Field(description="用户ID")
username: str = Field(description="用户名")
groups: List[AdminGroupSchema] = Field(description="用户组列表")
class QueryPageWithGroupIdSchema(QueryPageSchema):
group_id: Optional[int] = Field(description="用户ID")
class AdminUserPageSchema(BasePageSchema):
items: List[AdminUserSchema]
class UpdateUserInfoSchema(GroupIdListSchema, EmailSchema):
pass
class PermissionSchema(BaseModel):
id: int = Field(description="权限ID")
name: str = Field(description="权限名称")
module: str = Field(description="权限所属模块")
mount: bool = Field(description="是否为挂载权限")
class AdminGroupPermissionSchema(AdminGroupSchema):
permissions: List[PermissionSchema]
class AdminGroupPermissionPageSchema(BasePageSchema):
items: List[AdminGroupPermissionSchema]
class GroupBaseSchema(BaseModel):
name: str = Field(description="用户组名称")
info: Optional[str] = Field(description="用户组信息")
class CreateGroupSchema(GroupBaseSchema):
permission_ids: List[int] = Field(description="权限ID列表")
@validator("permission_ids", each_item=True)
def check_permission_id(cls, v, values, **kwargs):
if v <= 0:
raise ParameterError("权限ID必须大于0")
return v
class GroupIdWithPermissionIdListSchema(BaseModel):
group_id: int = Field(description="用户组ID")
permission_ids: List[int] = Field(description="权限ID列表")
@validator("permission_ids", each_item=True)
def check_permission_id(cls, v, values, **kwargs):
if v <= 0:
raise ParameterError("权限ID必须大于0")
return v