начало БД
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
from sqlalchemy import select
|
||||
from utils import logger
|
||||
from db import CRUD
|
||||
from db.schemas import AccessLevel
|
||||
|
||||
|
||||
async def getAccessdata(accessId: int) -> dict:
|
||||
query = select(AccessLevel).where(AccessLevel.id == accessId)
|
||||
accessData = await CRUD.read(query)
|
||||
if not accessData:
|
||||
logger.error("Уровень доступа не найден")
|
||||
return {}
|
||||
return accessData.toDict()
|
||||
|
||||
|
||||
async def editAccessData(accessId: int, **kwargs):
|
||||
query = select(AccessLevel).where(AccessLevel.id == accessId)
|
||||
accessData = await CRUD.read(query)
|
||||
if not accessData:
|
||||
logger.error("Уровень доступа не найден")
|
||||
return {}
|
||||
editedAccessData = await accessData.edit(**kwargs)
|
||||
logger.info(
|
||||
f"Уровень доступа {editedAccessData.title} успешно обновлен, изменены данные: {kwargs.keys()}"
|
||||
)
|
||||
return editedAccessData.toDict()
|
||||
@@ -0,0 +1,19 @@
|
||||
from utils import logger
|
||||
from db import CRUD
|
||||
from db.schemas import Toolbox
|
||||
from sqlalchemy import select
|
||||
|
||||
|
||||
async def addNewToolbox(toolboxData: dict):
|
||||
title = toolboxData.get("title", None)
|
||||
if not title:
|
||||
logger.error("Не указано Назавание тулбокса")
|
||||
return {}
|
||||
query = select(Toolbox).where(Toolbox.title == title)
|
||||
toolbox = await CRUD.read(query)
|
||||
if toolbox:
|
||||
logger.error("Тулбокс с таким названием уже существует")
|
||||
return {}
|
||||
newToolbox = await Toolbox(**toolboxData).save()
|
||||
logger.info(f"Тулбокс {newToolbox.title} успешно создан")
|
||||
return newToolbox.toDict()
|
||||
@@ -0,0 +1,81 @@
|
||||
from sqlalchemy import or_, select
|
||||
from db import CRUD
|
||||
from db.handlers.toolbox import addNewToolbox
|
||||
from db.schemas import User
|
||||
from utils import logger, pwd_hash
|
||||
|
||||
|
||||
async def addNewUser(userData: dict) -> dict:
|
||||
login = userData.get("login", None)
|
||||
if not login:
|
||||
logger.error("Не указан логин")
|
||||
return {}
|
||||
userName = userData.get("username")
|
||||
if not userName:
|
||||
logger.error("Не указано имя пользователя")
|
||||
return {}
|
||||
query = select(User).where(or_(User.login == login, User.username == userName))
|
||||
user = await CRUD.read(query)
|
||||
if user:
|
||||
logger.error("Пользователь с таким логином или именем уже существует")
|
||||
return {}
|
||||
if "access_level_id" not in userData:
|
||||
logger.error("Не указан уровень доступа")
|
||||
return {}
|
||||
if "password" not in userData:
|
||||
logger.error("Не указан пароль")
|
||||
return {}
|
||||
userData["hashed_password"] = pwd_hash(userData.pop("password"))
|
||||
newUser = await User(**userData).save()
|
||||
if not newUser:
|
||||
logger.error("Ошибка сохранения пользователя")
|
||||
return {}
|
||||
logger.info(f"Пользователь {newUser.username} успешно добавлен, id: {newUser.id}")
|
||||
if newUser.available_own_toolbox:
|
||||
newToolboxData = {
|
||||
"title": f"Тулбокс {newUser.username}",
|
||||
"description": f"Оборудование, полученное сотрудником {newUser.username}, под личную материальную ответственность",
|
||||
"owner_id": newUser.id,
|
||||
}
|
||||
newToolbox = await addNewToolbox(newToolboxData)
|
||||
logger.info(
|
||||
f"Тулбокс {newToolbox['title']} успешно создан и закреплен за пользователем {newUser.username}"
|
||||
)
|
||||
return newUser.toDict()
|
||||
|
||||
|
||||
async def editUser(userData: dict) -> dict:
|
||||
id = userData.get("id", None)
|
||||
if not id:
|
||||
logger.error("Не указан id пользователя")
|
||||
return {}
|
||||
query = select(User).where(User.id == id)
|
||||
user = await CRUD.read(query)
|
||||
if not user:
|
||||
logger.error("Пользователь с таким id не найден")
|
||||
return {}
|
||||
changedUserData = userData.get("changedUserData", {})
|
||||
if len(changedUserData.keys()) == 0:
|
||||
logger.error("Не указаны изменяемые данные")
|
||||
return {}
|
||||
if "password" in changedUserData:
|
||||
userData["hashed_password"] = pwd_hash(changedUserData.pop("password"))
|
||||
editedUser = await user.edit(**changedUserData)
|
||||
if not editedUser:
|
||||
logger.error("Ошибка обновления пользователя")
|
||||
return {}
|
||||
logger.info(
|
||||
f"Пользователь {editedUser.username} успешно обновлен, изменены данные: {changedUserData.keys()}"
|
||||
)
|
||||
if not user.available_own_toolbox:
|
||||
if editedUser.available_own_toolbox:
|
||||
newToolboxData = {
|
||||
"title": f"Тулбокс {editedUser.username}",
|
||||
"description": f"Оборудование, полученное сотрудником {editedUser.username}, под личную материальную ответственность",
|
||||
"owner_id": editedUser.id,
|
||||
}
|
||||
newToolbox = await addNewToolbox(newToolboxData)
|
||||
logger.info(
|
||||
f"Тулбокс {newToolbox['title']} успешно создан и закреплен за пользователем {editedUser.username}"
|
||||
)
|
||||
return editedUser.toDict()
|
||||
Reference in New Issue
Block a user