from src.windows import LoginWindow, AdminWindow, ClientWindow from src.objects import User, Rights from src.db import DB_AUTH_HARDCODED as 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): super().__init__() self._current = None self._app = QApplication([]) self._init_db() 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() @pyqtSlot(User) def _render(self, user: User): match user.rights: case Rights.ADMIN: self._admin_fabric() case Rights.MANAGER: pass case Rights.CLIENT: self._client_fabric(user) def _login_fabric(self): self.wlogin = LoginWindow(self, self._db) if self._current: self._current.close() self.wlogin.show() self._current = self.wlogin def _admin_fabric(self): self.wadmin = AdminWindow(self, self._db) if self._current: self._current.close() self.wadmin.show() self._current = self.wadmin def _client_fabric(self, user: User): self.wclient = ClientWindow(self, self._db, user) if self._current: self._current.close() self.wclient.show() self._current = self.wclient def run(self): import sys self._login_fabric() self._current.show() sys.exit(self._app.exec())