import datetime from PyQt6 import uic from PyQt6.QtWidgets import QMainWindow from Desktop.events_list_dialog import EventsListDialog from employee_dialog_widget import EmployeeDialogWidget from employee_card_widget import EmployeeCardWidget from data.connect import connect, User, Department from structure_widget import DepartmentGraph class MainWindow(QMainWindow): def __init__(self): super().__init__() uic.loadUi('ui/main.ui', self) self.selected_department = None self.department_employees = [] self.pushButton.clicked.connect(self.create_new_employee) self.structer_company_widget = DepartmentGraph(self) self.gridLayout_2.addWidget(self.structer_company_widget) def create_new_employee(self): self.create_employee_dialog = EmployeeDialogWidget(self.selected_department, self.department_employees, self) self.create_employee_dialog.exec() def select_department(self, department_id): self.department_employees = [] self.search_employees(department_id) with connect() as session: self.selected_department = session.query(Department).filter(Department.id == department_id).first() for i in range(self.verticalLayout.count()): self.verticalLayout.itemAt(i).widget().close() for employee in self.department_employees: employee_card = EmployeeCardWidget(employee) employee_card.pushButton.clicked.connect(self.edit_employee) employee_card.pushButton.employee = employee self.verticalLayout.addWidget(employee_card) def edit_employee(self): button = self.sender() employee = button.employee edit_widget = EmployeeDialogWidget(self.selected_department, self.department_employees, self, employee) self.create_employee_dialog = EventsListDialog(employee, self, self.selected_department) self.create_employee_dialog.gridLayout_2.addWidget(edit_widget) self.create_employee_dialog.exec() def search_employees(self, department_id): with connect() as session: employees = session.query(User).filter(User.department_id == department_id).all() for employee in employees: if employee.is_dismissed: if (datetime.date.today() - employee.dismiss_date).days <= 30: self.department_employees.append(employee) else: self.department_employees.append(employee) child_departments = session.query(Department).filter(Department.parent_id == department_id).all() for department in child_departments: self.search_employees(department.id)