fix: fixed attribute removing from module
This commit is contained in:
@ -79,24 +79,26 @@ async def delete_module(
|
||||
|
||||
|
||||
@router.post(
|
||||
"/attribute",
|
||||
"/{moduleId}/attribute/{attributeId}",
|
||||
response_model=AddAttributeResponse,
|
||||
operation_id="add_attribute_to_module",
|
||||
)
|
||||
async def add_attribute_to_module(
|
||||
session: SessionDependency,
|
||||
request: AddAttributeRequest,
|
||||
module_id: int = Path(alias="moduleId"),
|
||||
attribute_id: int = Path(alias="attributeId"),
|
||||
):
|
||||
return await ModuleService(session).add_attribute(request)
|
||||
return await ModuleService(session).add_attribute(module_id, attribute_id)
|
||||
|
||||
|
||||
@router.delete(
|
||||
"/attribute",
|
||||
"/{moduleId}/attribute/{attributeId}",
|
||||
response_model=DeleteAttributeResponse,
|
||||
operation_id="remove_attribute_from_module",
|
||||
)
|
||||
async def remove_attribute_from_module(
|
||||
session: SessionDependency,
|
||||
request: DeleteAttributeRequest,
|
||||
module_id: int = Path(alias="moduleId"),
|
||||
attribute_id: int = Path(alias="attributeId"),
|
||||
):
|
||||
return await ModuleService(session).delete_attribute(request)
|
||||
return await ModuleService(session).delete_attribute(module_id, attribute_id)
|
||||
|
||||
@ -45,16 +45,6 @@ class UpdateModuleCommonInfoSchema(BaseSchema):
|
||||
# region Requests
|
||||
|
||||
|
||||
class AddAttributeRequest(BaseSchema):
|
||||
attribute_id: int
|
||||
module_id: int
|
||||
|
||||
|
||||
class DeleteAttributeRequest(BaseSchema):
|
||||
attribute_id: int
|
||||
module_id: int
|
||||
|
||||
|
||||
class CreateModuleRequest(BaseSchema):
|
||||
entity: CreateModuleSchema
|
||||
|
||||
|
||||
@ -69,25 +69,25 @@ class ModuleService(
|
||||
raise ForbiddenException("Нельзя менять встроенный модуль")
|
||||
return True
|
||||
|
||||
async def add_attribute(self, request: AddAttributeRequest) -> AddAttributeResponse:
|
||||
module, attribute = await self._get_module_and_attr_from_request(request)
|
||||
async def add_attribute(self, module_id: int, attribute_id: int) -> AddAttributeResponse:
|
||||
module, attribute = await self._get_module_and_attr_from_request(module_id, attribute_id)
|
||||
await self.repository.add_attribute_to_module(module, attribute)
|
||||
return AddAttributeResponse(message="Аттрибут успешно добавлен к модулю")
|
||||
|
||||
async def delete_attribute(
|
||||
self, request: DeleteAttributeRequest
|
||||
self, module_id: int, attribute_id: int
|
||||
) -> DeleteAttributeResponse:
|
||||
module, attribute = await self._get_module_and_attr_from_request(request)
|
||||
module, attribute = await self._get_module_and_attr_from_request(module_id, attribute_id)
|
||||
await self.repository.delete_attribute_from_module(module, attribute)
|
||||
return DeleteAttributeResponse(message="Аттрибут успешно удален из модуля")
|
||||
|
||||
async def _get_module_and_attr_from_request(
|
||||
self, request: AddAttributeRequest | DeleteAttributeRequest
|
||||
self, module_id: int, attribute_id: int,
|
||||
) -> tuple[Module, Attribute]:
|
||||
module = await self.repository.get_by_id(request.module_id)
|
||||
module = await self.repository.get_by_id(module_id)
|
||||
if module.is_built_in:
|
||||
raise ForbiddenException("Нельзя менять встроенный модуль")
|
||||
|
||||
attr_repo = AttributeRepository(self.repository.session)
|
||||
attribute = await attr_repo.get_by_id(request.attribute_id)
|
||||
attribute = await attr_repo.get_by_id(attribute_id)
|
||||
return module, attribute
|
||||
|
||||
Reference in New Issue
Block a user