feat: attributes in cards and projects

This commit is contained in:
2025-02-27 18:34:38 +04:00
parent c6c006d45b
commit a2c9fd8e3b
16 changed files with 391 additions and 27 deletions

View File

@@ -4,7 +4,7 @@ from typing import Optional
from pydantic import field_validator
from schemas.base import BaseSchema
from schemas.base import BaseSchema, OkMessageSchema
# region Entities
@@ -16,17 +16,25 @@ class AttributeTypeSchema(BaseSchema):
is_deleted: bool
class AttributeSchema(BaseSchema):
id: int
class BaseAttributeSchema(BaseSchema):
label: str
name: str
is_applicable_to_group: bool
is_nullable: bool
default_value: Optional[bool | int | float | str | date | datetime]
type_id: int
description: str
class AttributeSchema(BaseAttributeSchema):
id: int
type: AttributeTypeSchema
is_deleted: bool
@field_validator("default_value", mode="before")
def validate_default_value(cls, value: Optional[bytes]):
if not isinstance(value, bytes):
return value
return pickle.loads(value) if value else None
@@ -41,3 +49,37 @@ class CardAttributeSchema(BaseSchema):
# endregion
# region Requests
class CreateAttributeRequest(BaseSchema):
attribute: BaseAttributeSchema
class UpdateAttributeRequest(BaseSchema):
attribute: AttributeSchema
# endregion
# region Responses
class GetAttributesResponse(BaseSchema):
attributes: list[AttributeSchema]
class GetAttributeTypesResponse(BaseSchema):
types: list[AttributeTypeSchema]
class CreateAttributeResponse(OkMessageSchema):
pass
class UpdateAttributeResponse(OkMessageSchema):
pass
class DeleteAttributeResponse(OkMessageSchema):
pass
# endregion

View File

@@ -116,6 +116,7 @@ class CardGeneralInfoSchema(BaseSchemaWithAttributes):
board_id: int
status_id: int
is_services_profit_accounted: bool
client_id: Optional[int]
class OptionalShippingWarehouseSchema(BaseShippingWarehouseSchema):

View File

@@ -1,11 +0,0 @@
from schemas.base import BaseSchema
# region Entities
class ModuleSchema(BaseSchema):
id: int
key: str
is_deleted: bool
# endregion

View File

@@ -1,6 +1,5 @@
from schemas.attribute import AttributeSchema
from schemas.base import BaseSchema, OkMessageSchema
from schemas.module import ModuleSchema
# region Entities
@@ -10,6 +9,13 @@ class BaseProjectSchema(BaseSchema):
name: str
class ModuleSchema(BaseSchema):
id: int
key: str
label: str
is_deleted: bool
class ProjectSchema(BaseProjectSchema):
id: int
attributes: list[AttributeSchema]
@@ -32,6 +38,16 @@ class UpdateProjectRequest(BaseSchema):
project: ProjectSchema
class UpdateModulesRequest(BaseSchema):
project_id: int
module_ids: list[int]
class UpdateAttributesRequest(BaseSchema):
project_id: int
attribute_ids: list[int]
# endregion
@@ -52,4 +68,16 @@ class UpdateProjectResponse(OkMessageSchema):
class DeleteProjectResponse(OkMessageSchema):
pass
class GetAllModulesResponse(BaseSchema):
modules: list[ModuleSchema]
class UpdateModulesResponse(OkMessageSchema):
pass
class UpdateAttributesResponse(OkMessageSchema):
pass
# endregion