начало БД
This commit is contained in:
@@ -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