template creation

This commit is contained in:
helldh 2026-02-15 15:52:10 +03:00
parent 3c2137da2b
commit c0727d7b59
6 changed files with 464 additions and 293 deletions

View file

@ -1,12 +1,15 @@
from src.windows import LoginWindow, AdminWindow, ClientWindow
from src.windows import LoginWindow, AdminWindow, ClientWindow, ManagerWindow
from src.objects import User, Rights
from src.db import DB_AUTH_HARDCODED as config
from src.db import DB_CONFIG
from PyQt6.QtWidgets import QApplication
from PyQt6.QtCore import QObject, pyqtSlot, pyqtSignal
from PyQt6.QtSql import QSqlDatabase
class Composer(QObject):
"""Управляет навигацией между окнами приложения"""
render_request = pyqtSignal(User)
def __init__(self):
@ -17,56 +20,64 @@ class Composer(QObject):
self.render_request.connect(self._render)
def _init_db(self):
"""Инициализация подключения к базе данных"""
self._db = QSqlDatabase("QPSQL")
self._db.setDatabaseName(config['dbname'])
self._db.setPort(config['port'])
self._db.setHostName(config['host'])
self._db.setUserName(config['user'])
self._db.setPassword(config['password'])
self._db.open()
self._db.setDatabaseName(DB_CONFIG['dbname'])
self._db.setPort(DB_CONFIG['port'])
self._db.setHostName(DB_CONFIG['host'])
self._db.setUserName(DB_CONFIG['user'])
self._db.setPassword(DB_CONFIG['password'])
if not self._db.open():
raise Exception(f"Не получилось подключиться к базе данных: {self._db.lastError().text()}")
@pyqtSlot(User)
def _render(self, user: User):
"""Маршрутизация пользователя на основе его роли"""
match user.rights:
case Rights.ADMIN:
self._admin_fabric()
case Rights.MANAGER:
pass
self._manager_fabric()
case Rights.CLIENT:
self._client_fabric(user)
case Rights.GUEST:
self._guest_fabric()
def _login_fabric(self):
"""Создание и отображение окна входа"""
self.wlogin = LoginWindow(self, self._db)
if self._current:
self._current.close()
self.wlogin.show()
self._current = self.wlogin
self._switch_window(self.wlogin)
def _admin_fabric(self):
"""Создание и отображение панели администратора"""
self.wadmin = AdminWindow(self, self._db)
self._switch_window(self.wadmin)
if self._current:
self._current.close()
self.wadmin.show()
self._current = self.wadmin
def _manager_fabric(self):
"""Создание и отображение панели менеджера"""
self.wmanager = ManagerWindow(self, self._db)
self._switch_window(self.wmanager)
def _client_fabric(self, user: User):
"""Создание и отображение панели клиента"""
self.wclient = ClientWindow(self, self._db, user)
self._switch_window(self.wclient)
def _guest_fabric(self):
"""Создание и отображение панели гостя"""
# TODO: Реализовать GuestWindow если нужен режим гостя
pass
def _switch_window(self, new_window):
"""Переключение между окнами"""
if self._current:
self._current.close()
self.wclient.show()
self._current = self.wclient
new_window.show()
self._current = new_window
def run(self):
"""Запуск приложения"""
import sys
self._login_fabric()
self._current.show()
sys.exit(self._app.exec())