Управление категориями
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,5 @@
|
||||
from sqlalchemy import select
|
||||
from db.handlers.toolkit import ToolkitHandler
|
||||
from utils import logger
|
||||
from db import CRUD
|
||||
from db.schemas.categories import Category
|
||||
@@ -32,15 +33,21 @@ class CategoryHandler:
|
||||
)
|
||||
return newCategory.toDict()
|
||||
|
||||
async def edit(categoryId: int, **kwargs):
|
||||
async def edit(categoryData: dict, userId: int):
|
||||
categoryId = categoryData.pop("id", None)
|
||||
if not categoryId:
|
||||
logger.error("Не указан id категории")
|
||||
return {}
|
||||
query = select(Category).where(Category.id == categoryId)
|
||||
category = await CRUD.read(query)
|
||||
if not category:
|
||||
logger.error("Категория не найдена")
|
||||
return {}
|
||||
try:
|
||||
user_id = kwargs.get("user_id", None)
|
||||
editedCategory = await category.edit(**kwargs)
|
||||
logger.info(
|
||||
f"Обновление категории {category.title} -> {categoryData.get('title')}"
|
||||
)
|
||||
editedCategory = await category.edit(**categoryData)
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка обновления категории: {str(e)}")
|
||||
return {}
|
||||
@@ -48,7 +55,7 @@ class CategoryHandler:
|
||||
logger.error("Категория не обновлена")
|
||||
return {}
|
||||
await ServiceRecordsHandler.add(
|
||||
user_id, {f"Обновлена категория {category.title}": editedCategory.toDict()}
|
||||
userId, {f"Обновлена категория {category.title}": editedCategory.toDict()}
|
||||
)
|
||||
logger.info(f"Категория {editedCategory.title} успешно обновлена")
|
||||
return editedCategory.toDict()
|
||||
@@ -64,6 +71,10 @@ class CategoryHandler:
|
||||
return [category.toDict() for category in categories] if categories else []
|
||||
|
||||
async def delete(categoryId: int, user_id: int = None):
|
||||
categoryInUse = await ToolkitHandler.checkCatogoryUse(categoryId)
|
||||
if categoryInUse:
|
||||
logger.error("Категория используется в инструментах")
|
||||
return True
|
||||
query = select(Category).where(Category.id == categoryId)
|
||||
category = await CRUD.read(query)
|
||||
if not category:
|
||||
|
||||
@@ -160,6 +160,11 @@ class ToolkitHandler:
|
||||
toolkits = await CRUD.read(query, True)
|
||||
return [toolkit.toDict() for toolkit in toolkits] if toolkits else []
|
||||
|
||||
async def checkCatogoryUse(category_id: int):
|
||||
query = select(Toolkit).where(Toolkit.category_id == category_id)
|
||||
toolkit = await CRUD.read(query)
|
||||
return True if toolkit else False
|
||||
|
||||
async def delete(toolkitId: int, user_id: int = None):
|
||||
query = select(Toolkit).where(Toolkit.id == toolkitId)
|
||||
toolkit = await CRUD.read(query)
|
||||
|
||||
Binary file not shown.
@@ -23,5 +23,5 @@ class Category(Base):
|
||||
async def save(self):
|
||||
return await CRUD.create(self, refresh=True)
|
||||
|
||||
async def edit(id: int, **kwargs):
|
||||
return await CRUD.update(Category, id, **kwargs)
|
||||
async def edit(self, **kwargs):
|
||||
return await CRUD.update(Category, self.id, **kwargs)
|
||||
|
||||
Reference in New Issue
Block a user