prb_1/Desktop/main_window.py
2025-01-16 21:21:14 +05:00

73 lines
2.7 KiB
Python

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)