Исправлена админ-панель: работа с бд теперь доступна (нужно добавить кнопки), добавлены кнопки 'Открыть сессию пользователя' - для того чтобы администратор мог открыть игру, не выходя из админ-панели, создав при этом дополнительное окно, и 'Выйти'(бургер-меню) - закрыть приложение. Исправлен процесс регистрации: при регистрации пользователя данные из таблицы Auth автоматически переносятся в таблицу Users и GameSession для дальнейшего просмотра, редактирования, удаления данных в админ-панели, добавлен параметр username для корректрой работы базы данных и процесса регистрации, исправлен интерфейс: добавлены наименования полей, для удобства пользователя. Изменения в коде: работа с бд перенесена в файл с интерфейсом админ-панели, потому что Python по-другому не воспринимает мои страдания((( Изменения в логировании: при запуске игры создаётся/обновляется файл game.log (импортировать в админ-панель, также как и logfile.log).

This commit is contained in:
Xatiko 2024-11-28 17:17:19 +03:00
parent 0e42442310
commit 815f432536
22 changed files with 2180 additions and 2724 deletions

View file

@ -1,19 +1,55 @@
from database.db_session import session
from database.models import Auth, Users
from sqlalchemy.exc import SQLAlchemyError
from database.db_session import get_session
from database.models import Auth, Users, GameSession
def register_user(login, password, username):
"""Регистрация нового пользователя."""
session = get_session()
# Проверяем, есть ли уже пользователь с таким логином
if session.query(Auth).filter_by(login=login).first():
return False, "Логин уже используется."
# Создаем новую запись в таблице Auth
new_auth = Auth(login=login, password=password)
session.add(new_auth)
session.commit()
new_user = Users(user_id=new_auth.user_id, username=username)
session.add(new_user)
session.commit()
try:
session.commit() # Сохраняем изменения в таблице Auth
# Создаем новую запись в таблице Users, связывая с только что добавленным Auth
# Используем new_auth.user_id для связи
new_user = Users(user_id=new_auth.user_id, username=username)
session.add(new_user)
session.commit() # Сохраняем изменения в таблице Users
# Создаем новый игровой процесс в GameSession для этого пользователя
new_game_session = GameSession(user_id=new_user.user_id, level=1) # Устанавливаем уровень по умолчанию
session.add(new_game_session)
session.commit() # Сохраняем данные в GameSession
print(f"Пользователь {username} успешно добавлен!")
except SQLAlchemyError as e:
session.rollback() # Откат изменений при ошибке
print(f"Ошибка при создании пользователя: {e}")
return False, "Произошла ошибка при регистрации."
finally:
session.close()
return True, "Регистрация успешна."
def login_user(login, password):
user = session.query(Auth).filter_by(login=login, password=password).first()
if user:
"""Авторизация пользователя."""
session = get_session()
# Проверяем, существует ли пользователь с таким логином и паролем
user_auth = session.query(Auth).filter_by(login=login, password=password).first()
if user_auth:
# Возвращаем успешный вход и ID пользователя из таблицы Users
user = session.query(Users).filter_by(user_id=user_auth.user_id).first()
return True, user.user_id
return False, "Неверный логин или пароль."