117 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from typing import Optional
 | 
						|
 | 
						|
from schemas.base import BaseSchema, OkMessageSchema
 | 
						|
from schemas.user import UserSchema
 | 
						|
 | 
						|
 | 
						|
# region Entities
 | 
						|
 | 
						|
class UserDepartmentSectionSchema(BaseSchema):
 | 
						|
    user: UserSchema
 | 
						|
    is_chief: bool
 | 
						|
 | 
						|
 | 
						|
class DepartmentSectionBaseSchema(BaseSchema):
 | 
						|
    name: str
 | 
						|
    department_id: Optional[int]
 | 
						|
    parent_department_section_id: Optional[int]
 | 
						|
 | 
						|
 | 
						|
class DepartmentSectionBriefSchema(DepartmentSectionBaseSchema):
 | 
						|
    id: int
 | 
						|
 | 
						|
 | 
						|
class DepartmentSectionSchema(DepartmentSectionBriefSchema):
 | 
						|
    users: list[UserDepartmentSectionSchema] = []
 | 
						|
    sections: list["DepartmentSectionSchema"] = []
 | 
						|
 | 
						|
 | 
						|
class DepartmentBaseSchema(BaseSchema):
 | 
						|
    name: str
 | 
						|
 | 
						|
 | 
						|
class DepartmentSchema(DepartmentBaseSchema):
 | 
						|
    id: int
 | 
						|
    sections: list[DepartmentSectionSchema] = []
 | 
						|
 | 
						|
 | 
						|
# endregion
 | 
						|
 | 
						|
# region Requests
 | 
						|
 | 
						|
class CreateDepartmentRequest(BaseSchema):
 | 
						|
    department: DepartmentBaseSchema
 | 
						|
 | 
						|
 | 
						|
class UpdateDepartmentRequest(BaseSchema):
 | 
						|
    department: DepartmentSchema
 | 
						|
 | 
						|
 | 
						|
class CreateDepartmentSectionRequest(BaseSchema):
 | 
						|
    section: DepartmentSectionBaseSchema
 | 
						|
 | 
						|
 | 
						|
class UpdateDepartmentSectionRequest(BaseSchema):
 | 
						|
    section: DepartmentSectionSchema
 | 
						|
 | 
						|
 | 
						|
class AddUserRequest(BaseSchema):
 | 
						|
    user_id: int
 | 
						|
    section_id: int
 | 
						|
    is_chief: bool
 | 
						|
 | 
						|
 | 
						|
class DeleteUserRequest(BaseSchema):
 | 
						|
    user_id: int
 | 
						|
    section_id: int
 | 
						|
 | 
						|
 | 
						|
# endregion
 | 
						|
 | 
						|
# region Responses
 | 
						|
 | 
						|
class GetDepartmentsResponse(BaseSchema):
 | 
						|
    departments: list[DepartmentSchema]
 | 
						|
 | 
						|
 | 
						|
class CreateDepartmentResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class UpdateDepartmentResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class DeleteDepartmentResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class GetDepartmentSectionsResponse(BaseSchema):
 | 
						|
    department_sections: list[DepartmentSectionBriefSchema]
 | 
						|
 | 
						|
 | 
						|
class CreateDepartmentSectionResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class UpdateDepartmentSectionResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class DeleteDepartmentSectionResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class GetAvailableUsersForDepartmentSectionResponse(BaseSchema):
 | 
						|
    users: list[UserSchema]
 | 
						|
 | 
						|
 | 
						|
class AddUserResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class DeleteUserResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
# endregion
 |