feat: вфыв
This commit is contained in:
		@@ -1,4 +1,4 @@
 | 
			
		||||
from schemas.base import CustomModelCamel, CustomModelSnake
 | 
			
		||||
from schemas.base import BaseSchema, CustomModelSnake
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class AuthLoginRequest(CustomModelSnake):
 | 
			
		||||
@@ -9,5 +9,5 @@ class AuthLoginRequest(CustomModelSnake):
 | 
			
		||||
    photo_url: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class AuthLoginResponse(CustomModelCamel):
 | 
			
		||||
class AuthLoginResponse(BaseSchema):
 | 
			
		||||
    access_token: str
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
from typing import List
 | 
			
		||||
 | 
			
		||||
from schemas.base import CustomModelCamel, OkMessageSchema
 | 
			
		||||
from schemas.base import BaseSchema, OkMessageSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# region Entities
 | 
			
		||||
class BarcodeTemplateAttributeSchema(CustomModelCamel):
 | 
			
		||||
class BarcodeTemplateAttributeSchema(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
    key: str
 | 
			
		||||
    name: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BarcodeTemplateSizeSchema(CustomModelCamel):
 | 
			
		||||
class BarcodeTemplateSizeSchema(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
    name: str
 | 
			
		||||
    key: str
 | 
			
		||||
@@ -18,12 +18,12 @@ class BarcodeTemplateSizeSchema(CustomModelCamel):
 | 
			
		||||
    height: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BarcodeTemplateAdditionalAttributeSchema(CustomModelCamel):
 | 
			
		||||
class BarcodeTemplateAdditionalAttributeSchema(BaseSchema):
 | 
			
		||||
    name: str
 | 
			
		||||
    value: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BaseBarcodeTemplateSchema(CustomModelCamel):
 | 
			
		||||
class BaseBarcodeTemplateSchema(BaseSchema):
 | 
			
		||||
    name: str
 | 
			
		||||
    is_default: bool
 | 
			
		||||
    size: BarcodeTemplateSizeSchema
 | 
			
		||||
@@ -36,12 +36,12 @@ class BarcodeTemplateSchema(BaseBarcodeTemplateSchema):
 | 
			
		||||
    attributes: list[BarcodeTemplateAttributeSchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BarcodeAttributeSchema(CustomModelCamel):
 | 
			
		||||
class BarcodeAttributeSchema(BaseSchema):
 | 
			
		||||
    name: str
 | 
			
		||||
    value: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BarcodeSchema(CustomModelCamel):
 | 
			
		||||
class BarcodeSchema(BaseSchema):
 | 
			
		||||
    barcode: str
 | 
			
		||||
    attributes: List[BarcodeAttributeSchema]
 | 
			
		||||
    additional_field: str | None = None
 | 
			
		||||
@@ -50,7 +50,7 @@ class BarcodeSchema(CustomModelCamel):
 | 
			
		||||
# endregion
 | 
			
		||||
 | 
			
		||||
# region Requests
 | 
			
		||||
class GetBarcodeTemplateByIdRequest(CustomModelCamel):
 | 
			
		||||
class GetBarcodeTemplateByIdRequest(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -62,16 +62,16 @@ class BarcodeTemplateUpdateResponse(OkMessageSchema):
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CreateBarcodeTemplateAttributeRequest(CustomModelCamel):
 | 
			
		||||
class CreateBarcodeTemplateAttributeRequest(BaseSchema):
 | 
			
		||||
    name: str
 | 
			
		||||
    label: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BarcodeTemplateDeleteRequest(CustomModelCamel):
 | 
			
		||||
class BarcodeTemplateDeleteRequest(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GetProductBarcodeRequest(CustomModelCamel):
 | 
			
		||||
class GetProductBarcodeRequest(BaseSchema):
 | 
			
		||||
    product_id: int
 | 
			
		||||
    barcode: str
 | 
			
		||||
    barcode_template_id: int | None = None
 | 
			
		||||
@@ -84,7 +84,7 @@ class GetProductBarcodePdfRequest(GetProductBarcodeRequest):
 | 
			
		||||
# endregion
 | 
			
		||||
 | 
			
		||||
# region Responses
 | 
			
		||||
class GetBarcodeTemplateByIdResponse(CustomModelCamel):
 | 
			
		||||
class GetBarcodeTemplateByIdResponse(BaseSchema):
 | 
			
		||||
    barcode_template: BarcodeTemplateSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -101,11 +101,11 @@ class CreateBarcodeTemplateAttributeResponse(OkMessageSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GetAllBarcodeTemplatesResponse(CustomModelCamel):
 | 
			
		||||
class GetAllBarcodeTemplatesResponse(BaseSchema):
 | 
			
		||||
    templates: list[BarcodeTemplateSchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GetAllBarcodeTemplateAttributesResponse(CustomModelCamel):
 | 
			
		||||
class GetAllBarcodeTemplateAttributesResponse(BaseSchema):
 | 
			
		||||
    attributes: list[BarcodeTemplateAttributeSchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -113,15 +113,15 @@ class BarcodeTemplateDeleteResponse(OkMessageSchema):
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GetProductBarcodeResponse(CustomModelCamel):
 | 
			
		||||
class GetProductBarcodeResponse(BaseSchema):
 | 
			
		||||
    barcode: BarcodeSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GetAllBarcodeTemplateSizesResponse(CustomModelCamel):
 | 
			
		||||
class GetAllBarcodeTemplateSizesResponse(BaseSchema):
 | 
			
		||||
    sizes: list[BarcodeTemplateSizeSchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GetProductBarcodePdfResponse(CustomModelCamel):
 | 
			
		||||
class GetProductBarcodePdfResponse(BaseSchema):
 | 
			
		||||
    base64_string: str
 | 
			
		||||
    filename: str
 | 
			
		||||
    mime_type: str
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
from typing import Self
 | 
			
		||||
 | 
			
		||||
from pydantic import BaseModel
 | 
			
		||||
from pydantic.alias_generators import to_camel
 | 
			
		||||
 | 
			
		||||
@@ -7,44 +9,52 @@ class CustomConfig:
 | 
			
		||||
    from_attributes = True
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CustomModelCamel(BaseModel):
 | 
			
		||||
class BaseSchema(BaseModel):
 | 
			
		||||
    class Config:
 | 
			
		||||
        from_attributes = True
 | 
			
		||||
        alias_generator = to_camel
 | 
			
		||||
        populate_by_name = True
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def from_sql_model(cls, model, fields: dict):
 | 
			
		||||
        model_dict = {c.name: getattr(model, c.name) for c in model.__table__.columns}
 | 
			
		||||
        model_dict.update(fields)
 | 
			
		||||
        return cls(**model_dict)
 | 
			
		||||
 | 
			
		||||
    def model_dump_parent(self):
 | 
			
		||||
        parent_class: BaseModel = self.__class__.__bases__[0]
 | 
			
		||||
        parent_fields = set(parent_class.model_fields.keys())
 | 
			
		||||
        return self.model_dump(include=parent_fields)
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def from_orm_list(cls, sql_models) -> list[Self]:
 | 
			
		||||
        return [cls.model_validate(model) for model in sql_models]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CustomModelSnake(BaseModel):
 | 
			
		||||
    class Config:
 | 
			
		||||
        from_attributes = True
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class OkMessageSchema(CustomModelCamel):
 | 
			
		||||
class OkMessageSchema(BaseSchema):
 | 
			
		||||
    ok: bool
 | 
			
		||||
    message: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class PaginationSchema(CustomModelCamel):
 | 
			
		||||
class PaginationSchema(BaseSchema):
 | 
			
		||||
    page: int | None = None
 | 
			
		||||
    items_per_page: int | None = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class PaginationInfoSchema(CustomModelCamel):
 | 
			
		||||
class PaginationInfoSchema(BaseSchema):
 | 
			
		||||
    total_pages: int
 | 
			
		||||
    total_items: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BaseEnumSchema(CustomModelCamel):
 | 
			
		||||
class BaseEnumSchema(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
    name: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BaseEnumListSchema(CustomModelCamel):
 | 
			
		||||
class BaseEnumListSchema(BaseSchema):
 | 
			
		||||
    items: list[BaseEnumSchema]
 | 
			
		||||
 
 | 
			
		||||
@@ -3,11 +3,11 @@ from typing import List
 | 
			
		||||
from pydantic import field_validator
 | 
			
		||||
 | 
			
		||||
from schemas.barcode import BarcodeTemplateSchema
 | 
			
		||||
from schemas.base import CustomModelCamel, OkMessageSchema
 | 
			
		||||
from schemas.base import BaseSchema, OkMessageSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# region Entities
 | 
			
		||||
class ClientDetailsSchema(CustomModelCamel):
 | 
			
		||||
class ClientDetailsSchema(BaseSchema):
 | 
			
		||||
    telegram: str | None = None
 | 
			
		||||
    phone_number: str | None = None
 | 
			
		||||
    inn: str | None = None
 | 
			
		||||
@@ -18,7 +18,7 @@ class ClientDetailsSchema(CustomModelCamel):
 | 
			
		||||
        return '' if v is None else v
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ClientSchema(CustomModelCamel):
 | 
			
		||||
class ClientSchema(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
    name: str
 | 
			
		||||
    company_name: str
 | 
			
		||||
@@ -29,39 +29,39 @@ class ClientSchema(CustomModelCamel):
 | 
			
		||||
# endregion
 | 
			
		||||
 | 
			
		||||
# region Requests
 | 
			
		||||
class ClientSearchRequest(CustomModelCamel):
 | 
			
		||||
class ClientSearchRequest(BaseSchema):
 | 
			
		||||
    name: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ClientUpdateDetailsRequest(CustomModelCamel):
 | 
			
		||||
class ClientUpdateDetailsRequest(BaseSchema):
 | 
			
		||||
    client_id: int
 | 
			
		||||
    details: ClientDetailsSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ClientCreateRequest(CustomModelCamel):
 | 
			
		||||
class ClientCreateRequest(BaseSchema):
 | 
			
		||||
    data: ClientSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ClientUpdateRequest(CustomModelCamel):
 | 
			
		||||
class ClientUpdateRequest(BaseSchema):
 | 
			
		||||
    data: ClientSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ClientDeleteRequest(CustomModelCamel):
 | 
			
		||||
class ClientDeleteRequest(BaseSchema):
 | 
			
		||||
    client_id: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# endregion
 | 
			
		||||
 | 
			
		||||
# region Responses
 | 
			
		||||
class ClientSearchResponse(CustomModelCamel):
 | 
			
		||||
class ClientSearchResponse(BaseSchema):
 | 
			
		||||
    clients: List[ClientSchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ClientUpdateDetailsResponse(CustomModelCamel):
 | 
			
		||||
class ClientUpdateDetailsResponse(BaseSchema):
 | 
			
		||||
    ok: bool
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ClientGetAllResponse(CustomModelCamel):
 | 
			
		||||
class ClientGetAllResponse(BaseSchema):
 | 
			
		||||
    clients: List[ClientSchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
import datetime
 | 
			
		||||
from typing import List, Optional
 | 
			
		||||
from typing import List, Optional, Union
 | 
			
		||||
 | 
			
		||||
from pydantic import constr
 | 
			
		||||
from pydantic import constr, field_validator
 | 
			
		||||
 | 
			
		||||
from schemas.base import CustomModelCamel, OkMessageSchema
 | 
			
		||||
from schemas.base import BaseSchema, OkMessageSchema
 | 
			
		||||
from schemas.client import ClientSchema
 | 
			
		||||
from schemas.product import ProductSchema
 | 
			
		||||
from schemas.service import ServiceSchema
 | 
			
		||||
@@ -12,14 +12,14 @@ from schemas.user import UserSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# region Entities
 | 
			
		||||
class FastDeal(CustomModelCamel):
 | 
			
		||||
class FastDeal(BaseSchema):
 | 
			
		||||
    name: str
 | 
			
		||||
    client: ClientSchema
 | 
			
		||||
    comment: str
 | 
			
		||||
    acceptance_date: datetime.datetime
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealSummary(CustomModelCamel):
 | 
			
		||||
class DealSummary(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
    name: str
 | 
			
		||||
    client_name: str
 | 
			
		||||
@@ -30,24 +30,24 @@ class DealSummary(CustomModelCamel):
 | 
			
		||||
    rank: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealServiceSchema(CustomModelCamel):
 | 
			
		||||
class DealServiceSchema(BaseSchema):
 | 
			
		||||
    service: ServiceSchema
 | 
			
		||||
    quantity: int
 | 
			
		||||
    price: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealProductServiceSchema(CustomModelCamel):
 | 
			
		||||
class DealProductServiceSchema(BaseSchema):
 | 
			
		||||
    service: ServiceSchema
 | 
			
		||||
    price: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealProductSchema(CustomModelCamel):
 | 
			
		||||
class DealProductSchema(BaseSchema):
 | 
			
		||||
    product: ProductSchema
 | 
			
		||||
    services: List[DealProductServiceSchema]
 | 
			
		||||
    quantity: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealStatusHistorySchema(CustomModelCamel):
 | 
			
		||||
class DealStatusHistorySchema(BaseSchema):
 | 
			
		||||
    user: UserSchema
 | 
			
		||||
    changed_at: datetime.datetime
 | 
			
		||||
    from_status: int
 | 
			
		||||
@@ -56,7 +56,7 @@ class DealStatusHistorySchema(CustomModelCamel):
 | 
			
		||||
    comment: str | None = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealSchema(CustomModelCamel):
 | 
			
		||||
class DealSchema(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
    name: str
 | 
			
		||||
    client_id: int
 | 
			
		||||
@@ -69,29 +69,30 @@ class DealSchema(CustomModelCamel):
 | 
			
		||||
    is_completed: bool
 | 
			
		||||
    client: ClientSchema
 | 
			
		||||
    comment: str
 | 
			
		||||
    shipping_warehouse: Optional[ShippingWarehouseSchema] = None
 | 
			
		||||
    shipping_warehouse: Optional[Union[ShippingWarehouseSchema, str]] = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealGeneralInfoSchema(CustomModelCamel):
 | 
			
		||||
class DealGeneralInfoSchema(BaseSchema):
 | 
			
		||||
    name: str
 | 
			
		||||
    is_deleted: bool
 | 
			
		||||
    is_completed: bool
 | 
			
		||||
    comment: str
 | 
			
		||||
    shipping_warehouse: Optional[str] = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# endregion Entities
 | 
			
		||||
 | 
			
		||||
# region Requests
 | 
			
		||||
class DealChangeStatusRequest(CustomModelCamel):
 | 
			
		||||
class DealChangeStatusRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    new_status: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealCreateRequest(CustomModelCamel):
 | 
			
		||||
class DealCreateRequest(BaseSchema):
 | 
			
		||||
    name: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealQuickCreateRequest(CustomModelCamel):
 | 
			
		||||
class DealQuickCreateRequest(BaseSchema):
 | 
			
		||||
    name: constr(strip_whitespace=True)
 | 
			
		||||
    client_name: constr(strip_whitespace=True)
 | 
			
		||||
    comment: str
 | 
			
		||||
@@ -99,70 +100,70 @@ class DealQuickCreateRequest(CustomModelCamel):
 | 
			
		||||
    shipping_warehouse: constr(strip_whitespace=True)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealSummaryRequest(CustomModelCamel):
 | 
			
		||||
class DealSummaryRequest(BaseSchema):
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealAddServicesRequest(CustomModelCamel):
 | 
			
		||||
class DealAddServicesRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    services: list[DealServiceSchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealUpdateServiceQuantityRequest(CustomModelCamel):
 | 
			
		||||
class DealUpdateServiceQuantityRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    service_id: int
 | 
			
		||||
    quantity: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealUpdateServiceRequest(CustomModelCamel):
 | 
			
		||||
class DealUpdateServiceRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    service: DealServiceSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealAddServiceRequest(CustomModelCamel):
 | 
			
		||||
class DealAddServiceRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    service_id: int
 | 
			
		||||
    quantity: int
 | 
			
		||||
    price: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealDeleteServiceRequest(CustomModelCamel):
 | 
			
		||||
class DealDeleteServiceRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    service_id: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealDeleteServicesRequest(CustomModelCamel):
 | 
			
		||||
class DealDeleteServicesRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    service_ids: List[int]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealUpdateProductQuantityRequest(CustomModelCamel):
 | 
			
		||||
class DealUpdateProductQuantityRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    product_id: int
 | 
			
		||||
    quantity: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealAddProductRequest(CustomModelCamel):
 | 
			
		||||
class DealAddProductRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    product: DealProductSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealDeleteProductRequest(CustomModelCamel):
 | 
			
		||||
class DealDeleteProductRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    product_id: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealDeleteProductsRequest(CustomModelCamel):
 | 
			
		||||
class DealDeleteProductsRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    product_ids: List[int]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealUpdateGeneralInfoRequest(CustomModelCamel):
 | 
			
		||||
class DealUpdateGeneralInfoRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    data: DealGeneralInfoSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealSummaryReorderRequest(CustomModelCamel):
 | 
			
		||||
class DealSummaryReorderRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    status: int
 | 
			
		||||
    index: int
 | 
			
		||||
@@ -170,11 +171,11 @@ class DealSummaryReorderRequest(CustomModelCamel):
 | 
			
		||||
    comment: str | None = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealDeleteRequest(CustomModelCamel):
 | 
			
		||||
class DealDeleteRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealUpdateProductRequest(CustomModelCamel):
 | 
			
		||||
class DealUpdateProductRequest(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
    product: DealProductSchema
 | 
			
		||||
 | 
			
		||||
@@ -190,32 +191,32 @@ class DealDeleteServicesResponse(OkMessageSchema):
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealGetAllResponse(CustomModelCamel):
 | 
			
		||||
class DealGetAllResponse(BaseSchema):
 | 
			
		||||
    deals: List[DealSchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealChangeStatusResponse(CustomModelCamel):
 | 
			
		||||
class DealChangeStatusResponse(BaseSchema):
 | 
			
		||||
    ok: bool
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealCreateResponse(CustomModelCamel):
 | 
			
		||||
class DealCreateResponse(BaseSchema):
 | 
			
		||||
    ok: bool
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealQuickCreateResponse(CustomModelCamel):
 | 
			
		||||
class DealQuickCreateResponse(BaseSchema):
 | 
			
		||||
    deal_id: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealSummaryResponse(CustomModelCamel):
 | 
			
		||||
class DealSummaryResponse(BaseSchema):
 | 
			
		||||
    summaries: List[DealSummary]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealAddServicesResponse(CustomModelCamel):
 | 
			
		||||
class DealAddServicesResponse(BaseSchema):
 | 
			
		||||
    ok: bool
 | 
			
		||||
    message: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DealUpdateServiceQuantityResponse(CustomModelCamel):
 | 
			
		||||
class DealUpdateServiceQuantityResponse(BaseSchema):
 | 
			
		||||
    ok: bool
 | 
			
		||||
    message: str
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								schemas/position.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								schemas/position.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
from typing import List
 | 
			
		||||
 | 
			
		||||
from schemas.base import BaseSchema, OkMessageSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class PositionSchema(BaseSchema):
 | 
			
		||||
    name: str
 | 
			
		||||
    key: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CreatePositionRequest(BaseSchema):
 | 
			
		||||
    data: PositionSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GetAllPositionsResponse(BaseSchema):
 | 
			
		||||
    positions: List[PositionSchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CreatePositionResponse(OkMessageSchema):
 | 
			
		||||
    pass
 | 
			
		||||
@@ -1,18 +1,18 @@
 | 
			
		||||
from typing import List
 | 
			
		||||
from schemas.barcode import BarcodeTemplateSchema
 | 
			
		||||
from schemas.base import CustomModelCamel, PaginationInfoSchema, OkMessageSchema
 | 
			
		||||
from schemas.base import BaseSchema, PaginationInfoSchema, OkMessageSchema
 | 
			
		||||
from pydantic import field_validator, model_validator
 | 
			
		||||
from models import ProductBarcode
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# region Entities
 | 
			
		||||
class ProductImageSchema(CustomModelCamel):
 | 
			
		||||
class ProductImageSchema(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
    product_id: int
 | 
			
		||||
    image_url: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BaseProductSchema(CustomModelCamel):
 | 
			
		||||
class BaseProductSchema(BaseSchema):
 | 
			
		||||
    name: str
 | 
			
		||||
    article: str | None = ''
 | 
			
		||||
    client_id: int
 | 
			
		||||
@@ -55,25 +55,25 @@ class ProductCreateRequest(BaseProductSchema):
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ProductDeleteRequest(CustomModelCamel):
 | 
			
		||||
class ProductDeleteRequest(BaseSchema):
 | 
			
		||||
    product_id: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ProductUpdateRequest(CustomModelCamel):
 | 
			
		||||
class ProductUpdateRequest(BaseSchema):
 | 
			
		||||
    product: ProductSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ProductAddBarcodeRequest(CustomModelCamel):
 | 
			
		||||
class ProductAddBarcodeRequest(BaseSchema):
 | 
			
		||||
    product_id: int
 | 
			
		||||
    barcode: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ProductDeleteBarcodeRequest(CustomModelCamel):
 | 
			
		||||
class ProductDeleteBarcodeRequest(BaseSchema):
 | 
			
		||||
    product_id: int
 | 
			
		||||
    barcode: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ProductGenerateBarcodeRequest(CustomModelCamel):
 | 
			
		||||
class ProductGenerateBarcodeRequest(BaseSchema):
 | 
			
		||||
    product_id: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -84,7 +84,7 @@ class ProductCreateResponse(OkMessageSchema):
 | 
			
		||||
    product_id: int | None = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ProductGetResponse(CustomModelCamel):
 | 
			
		||||
class ProductGetResponse(BaseSchema):
 | 
			
		||||
    products: List[ProductSchema]
 | 
			
		||||
    pagination_info: PaginationInfoSchema
 | 
			
		||||
 | 
			
		||||
@@ -109,7 +109,7 @@ class ProductGenerateBarcodeResponse(OkMessageSchema):
 | 
			
		||||
    barcode: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ProductExistsBarcodeResponse(CustomModelCamel):
 | 
			
		||||
class ProductExistsBarcodeResponse(BaseSchema):
 | 
			
		||||
    exists: bool
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								schemas/role.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								schemas/role.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
from typing import List
 | 
			
		||||
 | 
			
		||||
from schemas.base import BaseSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# region Entities
 | 
			
		||||
class PermissionSchema(BaseSchema):
 | 
			
		||||
    key: str
 | 
			
		||||
    name: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class RoleSchema(BaseSchema):
 | 
			
		||||
    key: str
 | 
			
		||||
    name: str
 | 
			
		||||
    permissions: List[PermissionSchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# endregion
 | 
			
		||||
 | 
			
		||||
# region Requests
 | 
			
		||||
# endregion
 | 
			
		||||
 | 
			
		||||
# region Responses
 | 
			
		||||
class GetAllRolesResponse(BaseSchema):
 | 
			
		||||
    roles: List[RoleSchema]
 | 
			
		||||
# endregion
 | 
			
		||||
@@ -1,22 +1,22 @@
 | 
			
		||||
from typing import List, Optional
 | 
			
		||||
 | 
			
		||||
from schemas.base import CustomModelCamel, OkMessageSchema, BaseEnumSchema
 | 
			
		||||
from schemas.base import BaseSchema, OkMessageSchema, BaseEnumSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# region Entities
 | 
			
		||||
class ServicePriceRangeSchema(CustomModelCamel):
 | 
			
		||||
class ServicePriceRangeSchema(BaseSchema):
 | 
			
		||||
    id: int | None
 | 
			
		||||
    from_quantity: int
 | 
			
		||||
    to_quantity: int
 | 
			
		||||
    price: float
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ServiceCategorySchema(CustomModelCamel):
 | 
			
		||||
class ServiceCategorySchema(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
    name: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ServiceSchema(CustomModelCamel):
 | 
			
		||||
class ServiceSchema(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
    name: str
 | 
			
		||||
    category: ServiceCategorySchema
 | 
			
		||||
@@ -30,19 +30,19 @@ class ServiceSchema(CustomModelCamel):
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# region Requests
 | 
			
		||||
class ServiceCreateRequest(CustomModelCamel):
 | 
			
		||||
class ServiceCreateRequest(BaseSchema):
 | 
			
		||||
    service: ServiceSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ServiceCreateCategoryRequest(CustomModelCamel):
 | 
			
		||||
class ServiceCreateCategoryRequest(BaseSchema):
 | 
			
		||||
    category: ServiceCategorySchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ServiceUpdateRequest(CustomModelCamel):
 | 
			
		||||
class ServiceUpdateRequest(BaseSchema):
 | 
			
		||||
    data: ServiceSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ServiceDeleteRequest(CustomModelCamel):
 | 
			
		||||
class ServiceDeleteRequest(BaseSchema):
 | 
			
		||||
    service_id: int
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -50,11 +50,11 @@ class ServiceDeleteRequest(CustomModelCamel):
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# region Responses
 | 
			
		||||
class ServiceGetAllResponse(CustomModelCamel):
 | 
			
		||||
class ServiceGetAllResponse(BaseSchema):
 | 
			
		||||
    services: List[ServiceSchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ServiceGetAllCategoriesResponse(CustomModelCamel):
 | 
			
		||||
class ServiceGetAllCategoriesResponse(BaseSchema):
 | 
			
		||||
    categories: List[ServiceCategorySchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
from typing import List
 | 
			
		||||
 | 
			
		||||
from schemas.base import CustomModelCamel
 | 
			
		||||
from schemas.base import BaseSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ShippingWarehouseSchema(CustomModelCamel):
 | 
			
		||||
class ShippingWarehouseSchema(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
    name: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GetAllShippingWarehousesResponse(CustomModelCamel):
 | 
			
		||||
class GetAllShippingWarehousesResponse(BaseSchema):
 | 
			
		||||
    shipping_warehouses: List[ShippingWarehouseSchema]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,50 @@
 | 
			
		||||
from schemas.base import CustomModelCamel
 | 
			
		||||
from typing import List, Optional
 | 
			
		||||
 | 
			
		||||
from schemas.base import BaseSchema, OkMessageSchema
 | 
			
		||||
from schemas.position import PositionSchema
 | 
			
		||||
from schemas.role import RoleSchema
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class UserSchema(CustomModelCamel):
 | 
			
		||||
# region Entities
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BaseUser(BaseSchema):
 | 
			
		||||
    id: int
 | 
			
		||||
    telegram_id: int
 | 
			
		||||
    phone_number: str | None = None
 | 
			
		||||
    first_name: str
 | 
			
		||||
    second_name: str
 | 
			
		||||
    comment: str
 | 
			
		||||
 | 
			
		||||
    is_admin: bool
 | 
			
		||||
    is_blocked: bool
 | 
			
		||||
    is_deleted: bool
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class UserSchema(BaseUser):
 | 
			
		||||
    role_key: str
 | 
			
		||||
    role: RoleSchema
 | 
			
		||||
    position: Optional[PositionSchema] = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class UserUpdate(BaseUser):
 | 
			
		||||
    position_key: Optional[str] = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# endregion
 | 
			
		||||
 | 
			
		||||
# region Requests
 | 
			
		||||
class UpdateUserRequest(BaseSchema):
 | 
			
		||||
    data: UserUpdate
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# endregion
 | 
			
		||||
 | 
			
		||||
# region Responses
 | 
			
		||||
class GetAllUsersResponse(BaseSchema):
 | 
			
		||||
    users: List[UserSchema]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class UpdateUserResponse(OkMessageSchema):
 | 
			
		||||
    pass
 | 
			
		||||
# endregion
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user