73 lines
2.7 KiB
Python
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)
|