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