# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui, QtSql
class MainProgram(object):
def draw_menu(self, mainwindow):
mainwindow.setWindowTitle("Data Base")
mainwindow.resize(868, 600)
self.centralwidget = QtGui.QWidget(mainwindow)
self.gridLayout = QtGui.QGridLayout(self.centralwidget)
self.tabWidget = QtGui.QTabWidget(self.centralwidget)
#----------------------------------------------------------------------------------------------
#-----------------Interface section------------------------------------------------------------
#----------------------------------------------------------------------------------------------
self.interview = QtGui.QWidget()
self.gridLayout_3 = QtGui.QGridLayout(self.interview)
self.save_interview_button = QtGui.QToolButton(self.interview)
self.save_interview_button.setText("Save")
self.save_interview_button.setPopupMode (QtGui.QToolButton.DelayedPopup)
self.gridLayout_3.addWidget(self.save_interview_button, 0, 0, 1, 1)
self.refresh_interview_button = QtGui.QToolButton(self.interview)
self.refresh_interview_button.setText("Refresh")
self.gridLayout_3.addWidget(self.refresh_interview_button, 0, 1, 1, 2)
self.search_interview_button = QtGui.QToolButton(self.interview)
self.search_interview_button.setText("Search")
self.gridLayout_3.addWidget(self.search_interview_button, 0, 8, 1, 1)
self.add_interview_button = QtGui.QToolButton(self.interview)
self.add_interview_button.setText("Add interview")
self.gridLayout_3.addWidget(self.add_interview_button, 2, 0, 1, 2)
self.del_interview_button = QtGui.QToolButton(self.interview)
self.del_interview_button.setText("Delete interview")
self.gridLayout_3.addWidget(self.del_interview_button, 2, 2, 1, 2)
self.accept_interview_button = QtGui.QToolButton(self.interview)
self.accept_interview_button.setText("Accept employer")
self.gridLayout_3.addWidget(self.accept_interview_button,2,4,1,1)
self.reject_interview_button = QtGui.QToolButton(self.interview)
self.reject_interview_button.setText("Reject employer")
self.gridLayout_3.addWidget(self.reject_interview_button,2,8,1,1)
self.interview_view = QtGui.QTableView(self.interview)
self.gridLayout_3.addWidget(self.interview_view, 1, 0, 1, 9)
self.interview_model = QtSql.QSqlRelationalTableModel()
init_interview_model(self.interview_model)
self.interview_view.setModel (self.interview_model)
self.interview_view.setItemDelegate(QtSql.QSqlRelationalDelegate(self.interview_view))
self.interview_view.hideColumn(0)
self.interview_view.hideColumn(5)
self.interview_view.setSortingEnabled(True)
self.interview_view.setCornerButtonEnabled (False)
self.click_refresh_interview()
self.tabWidget.addTab(self.interview,"Interview")
self.employee = QtGui.QWidget()
self.del_interview_button.setEnabled(False)
self.accept_interview_button.setEnabled(False)
self.reject_interview_button.setEnabled(False)
#----------------------------------------------------------------------------------------------
#-----------------Employee section-------------------------------------------------------------
#----------------------------------------------------------------------------------------------
self.employee_model = QtSql.QSqlRelationalTableModel()
init_employee_model(self.employee_model)
self.break_model = QtSql.QSqlRelationalTableModel()
init_break_model(self.break_model)
self.spec_model = QtSql.QSqlRelationalTableModel()
init_spec_model(self.spec_model)
self.gridLayout_6 = QtGui.QGridLayout(self.employee)
self.save_employee_button = QtGui.QToolButton(self.employee)
self.save_employee_button.setText("Save")
self.gridLayout_6.addWidget(self.save_employee_button, 0, 0, 1, 1)
self.refresh_employee_button = QtGui.QToolButton(self.employee)
self.refresh_employee_button.setText("Refresh")
self.gridLayout_6.addWidget(self.refresh_employee_button, 0, 1, 1, 1)
self.employee_view = QtGui.QTableView(self.employee)
self.employee_view.setModel(self.employee_model)
self.employee_view.hideColumn(0)
self.employee_view.hideColumn(4)
self.employee_view.setSortingEnabled(True)
self.employee_view.setCornerButtonEnabled (False)
self.employee_model.select()
self.gridLayout_6.addWidget(self.employee_view, 2, 0, 1, 4)
self.search_employee_button = QtGui.QToolButton(self.employee)
self.search_employee_button.setText("Search")
self.gridLayout_6.addWidget(self.search_employee_button, 0, 3, 1, 1)
self.employee_frame = QtGui.QFrame(self.employee)
self.employee_frame.setFrameShape(QtGui.QFrame.StyledPanel)
self.employee_frame.setFrameShadow(QtGui.QFrame.Raised)
self.gridLayout_5 = QtGui.QGridLayout(self.employee_frame)
self.break_groupbox = QtGui.QGroupBox(self.employee_frame)
self.break_groupbox.setTitle("Breaks for ")
self.gridLayout_31 = QtGui.QGridLayout(self.break_groupbox)
self.break_view = QtGui.QTableView(self.break_groupbox)
self.break_view.setModel(self.break_model)
self.break_view.hideColumn(0)
self.break_view.hideColumn(4)
self.break_view.hideColumn(6)
self.break_view.setSortingEnabled(True)
self.break_view.setCornerButtonEnabled (False)
self.gridLayout_31.addWidget(self.break_view, 0, 0, 3, 1)
self.add_break_button = QtGui.QToolButton(self.break_groupbox)
self.add_break_button.setText(" Add ")
self.gridLayout_31.addWidget(self.add_break_button, 0, 1, 1, 1)
self.del_break_button = QtGui.QToolButton(self.break_groupbox)
self.del_break_button.setText("Delete")
self.gridLayout_31.addWidget(self.del_break_button, 1, 1, 1, 1)
self.gridLayout_5.addWidget(self.break_groupbox, 0, 0, 4, 1)
self.del_employee_button = QtGui.QToolButton(self.employee_frame)
self.del_employee_button.setText("Delete employee")
self.gridLayout_5.addWidget(self.del_employee_button, 0, 1, 1, 1)
self.detail_employee_button = QtGui.QToolButton(self.employee_frame)
self.detail_employee_button.setText("Detail employee")
self.gridLayout_5.addWidget(self.detail_employee_button,2,1,1,1)
self.spec_groupbox = QtGui.QGroupBox(self.employee_frame)
self.spec_groupbox.setTitle("Specialization for ")
self.gridLayout_4 = QtGui.QGridLayout(self.spec_groupbox)
self.spec_view = QtGui.QTableView(self.spec_groupbox)
self.spec_view.setModel(self.spec_model)
self.spec_view.hideColumn(0)
self.spec_view.hideColumn(3)
self.spec_view.hideColumn(5)
self.spec_view.setSortingEnabled(True)
self.spec_view.setCornerButtonEnabled (False)
self.gridLayout_4.addWidget(self.spec_view, 0, 0, 3, 1)
self.add_spec_button = QtGui.QToolButton(self.spec_groupbox)
self.add_spec_button.setText(" Add ")
self.gridLayout_4.addWidget(self.add_spec_button, 0, 1, 1, 1)
self.del_spec_button = QtGui.QToolButton(self.spec_groupbox)
self.del_spec_button.setText("Delete")
self.gridLayout_4.addWidget(self.del_spec_button, 1, 1, 1, 1)
self.gridLayout_5.addWidget(self.spec_groupbox, 0, 2, 4, 1)
self.fire_employee_button = QtGui.QToolButton(self.employee_frame)
self.fire_employee_button.setText(" Fire employer ")
self.gridLayout_5.addWidget(self.fire_employee_button, 1, 1, 1, 1)
self.gridLayout_6.addWidget(self.employee_frame, 3, 0, 1, 4)
self.del_employee_button.setEnabled(False)
self.fire_employee_button.setEnabled(False)
self.detail_employee_button.setEnabled(False)
self.add_break_button.setEnabled(False)
self.add_spec_button.setEnabled(False)
self.del_break_button.setEnabled(False)
self.del_spec_button.setEnabled(False)
#--------------------------------------------------------------------------------------------------------
self.tabWidget.addTab(self.employee, "Employee")
self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)
mainwindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(mainwindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 868, 25))
self.main_menu = QtGui.QMenu(self.menubar)
self.main_menu.setTitle("Menu")
self.help_menu = QtGui.QMenu(self.menubar)
self.help_menu.setTitle("?")
mainwindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(mainwindow)
mainwindow.setStatusBar(self.statusbar)
self.action_login = QtGui.QAction(mainwindow)
self.action_login.setText("Log in")
self.action_logout = QtGui.QAction(mainwindow)
self.action_logout.setText("Log out")
self.action_save = QtGui.QAction(mainwindow)
self.action_save.setText("Save")
self.action_refresh = QtGui.QAction(mainwindow)
self.action_refresh.setText("Refresh")
self.action_search = QtGui.QAction(mainwindow)
self.action_search.setText("Search")
self.action_settings = QtGui.QAction(mainwindow)
self.action_settings.setText("Settings")
self.action_quit = QtGui.QAction(mainwindow)
self.action_quit.setText("Quit")
self.action_about = QtGui.QAction(mainwindow)
self.action_about.setText("About")
self.main_menu.addAction(self.action_login)
self.main_menu.addAction(self.action_logout)
self.main_menu.addSeparator()
self.main_menu.addAction(self.action_save)
self.main_menu.addAction(self.action_refresh)
self.main_menu.addAction(self.action_search)
self.main_menu.addSeparator()
self.main_menu.addAction(self.action_settings)
self.main_menu.addAction(self.action_quit)
self.help_menu.addAction(self.action_about)
self.menubar.addAction(self.main_menu.menuAction())
self.menubar.addAction(self.help_menu.menuAction())
#----------------------------------------------------------------------------------------------
#-----------------Interview slots--------------------------------------------------------------
#----------------------------------------------------------------------------------------------
QtCore.QObject.connect(self.save_interview_button, QtCore.SIGNAL("clicked()"),self.click_save_interview)
QtCore.QObject.connect(self.refresh_interview_button, QtCore.SIGNAL("clicked()"),self.click_refresh_interview)
QtCore.QObject.connect(self.search_interview_button, QtCore.SIGNAL("clicked()"),self.global_search_pressed)
QtCore.QObject.connect(self.add_interview_button, QtCore.SIGNAL("clicked()"),self.click_add_interview)
QtCore.QObject.connect(self.del_interview_button, QtCore.SIGNAL("clicked()"),self.click_del_interview)
QtCore.QObject.connect(self.accept_interview_button, QtCore.SIGNAL("clicked()"),self.click_accept_interview)
QtCore.QObject.connect(self.reject_interview_button, QtCore.SIGNAL("clicked()"),self.click_reject_interview)
QtCore.QObject.connect(self.interview_view, QtCore.SIGNAL("clicked(QModelIndex)"),self.click_interview_view)
#----------------------------------------------------------------------------------------------
#-----------------Employee slots---------------------------------------------------------------
#----------------------------------------------------------------------------------------------
QtCore.QObject.connect(self.save_employee_button, QtCore.SIGNAL("clicked()"),self.click_save_employee)
QtCore.QObject.connect(self.refresh_employee_button, QtCore.SIGNAL("clicked()"),self.click_refresh_employee)
QtCore.QObject.connect(self.search_employee_button, QtCore.SIGNAL("clicked()"),self.global_search_pressed)
QtCore.QObject.connect(self.add_break_button, QtCore.SIGNAL("clicked()"),self.click_add_break)
QtCore.QObject.connect(self.del_break_button, QtCore.SIGNAL("clicked()"),self.click_del_break)
QtCore.QObject.connect(self.add_spec_button, QtCore.SIGNAL("clicked()"),self.click_add_spec)
QtCore.QObject.connect(self.del_spec_button, QtCore.SIGNAL("clicked()"),self.click_del_spec)
QtCore.QObject.connect(self.del_employee_button, QtCore.SIGNAL("clicked()"),self.click_del_employee)
QtCore.QObject.connect(self.fire_employee_button, QtCore.SIGNAL("clicked()"),self.click_fire_employee)
QtCore.QObject.connect(self.employee_view, QtCore.SIGNAL("clicked(QModelIndex)"),self.click_employee)
QtCore.QObject.connect(self.detail_employee_button, QtCore.SIGNAL("clicked()"),self.click_detail_employee)
self.tabWidget.setCurrentIndex(0)
#----------------------------------------------------------------------------------------------
#-----------------Popup Menu slots-------------------------------------------------------------
#----------------------------------------------------------------------------------------------
QtCore.QObject.connect(self.action_login, QtCore.SIGNAL("triggered()"), self.click_menu_login)
QtCore.QObject.connect(self.action_logout, QtCore.SIGNAL("triggered()"), self.click_menu_logout)
QtCore.QObject.connect(self.action_save, QtCore.SIGNAL("triggered()"), self.click_menu_save)
QtCore.QObject.connect(self.action_refresh, QtCore.SIGNAL("triggered()"), self.click_menu_refresh)
QtCore.QObject.connect(self.action_search, QtCore.SIGNAL("triggered()"), self.global_search_pressed)
QtCore.QObject.connect(self.action_settings, QtCore.SIGNAL("triggered()"), self.click_menu_settings)
QtCore.QObject.connect(self.action_about, QtCore.SIGNAL("triggered()"), self.click_menu_about)
QtCore.QObject.connect(self.action_quit, QtCore.SIGNAL("triggered()"), app,QtCore.SLOT("quit()"))
QtCore.QMetaObject.connectSlotsByName(mainwindow)
#----------------------------------------------------------------------------------------------
#-----------------Popup Menu methods-----------------------------------------------------------
#----------------------------------------------------------------------------------------------
def click_menu_login (self):
print "click_menu_login"
#----------------------------------------------------------------------------------------------
def click_menu_logout (self):
print "lick_menu_logout"
#----------------------------------------------------------------------------------------------
def click_menu_save (self):
print "click_menu_save"
self.click_save_interview()
self.click_save_employee()
#дописать жекины сейвы
#----------------------------------------------------------------------------------------------
def click_menu_refresh (self):
print "click_menu_refresh"
self.click_refresh_interview()
self.click_refresh_employee()
#дописать жекины рефрешы
#----------------------------------------------------------------------------------------------
def click_menu_settings (self):
print "click_menu_settings"
self.settings = QtGui.QDialog(self.interview)
self.settings.setWindowTitle("Settings")
self.settings.resize(714, 619)
self.settings.gridLayout_8 = QtGui.QGridLayout(self.settings)
self.settings.tabWidget = QtGui.QTabWidget(self.settings)
self.settings.settings_tab = QtGui.QWidget()
self.settings.gridLayout_2 = QtGui.QGridLayout(self.settings.settings_tab)
self.settings.host_label = QtGui.QLabel(self.settings.settings_tab)
self.settings.host_label.setText("Host")
self.settings.gridLayout_2.addWidget(self.settings.host_label, 0, 0, 1, 1)
self.settings.host_label = QtGui.QLabel(self.settings.settings_tab)
self.settings.host_label.setText("Host")
self.settings.gridLayout_2.addWidget(self.settings.host_label, 0, 0, 1, 1)
self.settings.host_edit = QtGui.QLineEdit(self.settings.settings_tab)
self.settings.gridLayout_2.addWidget(self.settings.host_edit, 0, 1, 1, 1)
self.settings.port_label = QtGui.QLabel(self.settings.settings_tab)
self.settings.port_label.setText("Port")
self.settings.gridLayout_2.addWidget(self.settings.port_label, 1, 0, 1, 1)
self.settings.port_edit = QtGui.QLineEdit(self.settings.settings_tab)
self.settings.gridLayout_2.addWidget(self.settings.port_edit, 1, 1, 1, 1)
self.settings.db_name_label = QtGui.QLabel(self.settings.settings_tab)
self.settings.db_name_label.setText("DB name")
self.settings.gridLayout_2.addWidget(self.settings.db_name_label, 2, 0, 1, 1)
self.settings.db_name_edit = QtGui.QLineEdit(self.settings.settings_tab)
self.settings.gridLayout_2.addWidget(self.settings.db_name_edit, 2, 1, 1, 1)
self.settings.settings_groupbox = QtGui.QGroupBox(self.settings.settings_tab)
self.settings.settings_groupbox.setTitle("Tables")
self.settings.gridLayout = QtGui.QGridLayout(self.settings.settings_groupbox)
self.settings.address_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.address_radio.setText("Address")
self.settings.gridLayout.addWidget(self.settings.address_radio, 0, 0, 1, 1)
self.settings.article_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.article_radio.setText("Article")
self.settings.gridLayout.addWidget(self.settings.article_radio, 0, 1, 1, 1)
self.settings.client_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.client_radio.setText("Client")
self.settings.gridLayout.addWidget(self.settings.client_radio, 0, 2, 1, 1)
self.settings.dayoff_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.dayoff_radio.setText("Dayoff")
self.settings.gridLayout.addWidget(self.settings.dayoff_radio, 1, 0, 1, 1)
self.settings.dayoff_type_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.dayoff_type_radio.setText("Dayoff type")
self.settings.gridLayout.addWidget(self.settings.dayoff_type_radio, 1, 1, 1, 1)
self.settings.interview_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.interview_radio.setText("Interview")
self.settings.gridLayout.addWidget(self.settings.interview_radio, 1, 2, 1, 1)
self.settings.interview_status_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.interview_status_radio.setText("Interview status")
self.settings.gridLayout.addWidget(self.settings.interview_status_radio, 2, 0, 1, 1)
self.settings.price_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.price_radio.setText("Price")
self.settings.gridLayout.addWidget(self.settings.price_radio, 2, 1, 1, 1)
self.settings.spec_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.spec_radio.setText("Specialization")
self.settings.gridLayout.addWidget(self.settings.spec_radio, 2, 2, 1, 1)
self.settings.t_task_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.t_task_radio.setText("t_task")
self.settings.gridLayout.addWidget(self.settings.t_task_radio, 3, 0, 1, 1)
self.settings.task_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.task_radio.setText("Task")
self.settings.gridLayout.addWidget(self.settings.task_radio, 3, 1, 1, 1)
self.settings.task_status_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.task_status_radio.setText("Task status")
self.settings.gridLayout.addWidget(self.settings.task_status_radio, 3, 2, 1, 1)
self.settings.worker_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.worker_radio.setText("Worker")
self.settings.gridLayout.addWidget(self.settings.worker_radio, 4, 0, 1, 1)
self.settings.worker_spec_radio = QtGui.QRadioButton(self.settings.settings_groupbox)
self.settings.worker_spec_radio.setText("Worker spec")
self.settings.gridLayout.addWidget(self.settings.worker_spec_radio, 4, 1, 1, 1)
self.settings.gridLayout_2.addWidget(self.settings.settings_groupbox,3,0,1,2)
self.settings.set_win_view = QtGui.QTableView(self.settings.settings_tab)
self.settings.gridLayout_2.addWidget(self.settings.set_win_view, 4, 0, 1, 2)
self.settings.set_win_model = QtSql.QSqlRelationalTableModel()
self.settings.set_win_model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
self.settings.set_win_view.setModel(self.settings.set_win_model)
self.settings.srefresh_button = QtGui.QToolButton(self.settings.settings_tab)
self.settings.srefresh_button.setText("Refresh")
self.settings.gridLayout_2.addWidget(self.settings.srefresh_button, 5, 0, 1, 1)
self.settings.tabWidget.addTab(self.settings.settings_tab,"Settings")
self.settings.report_tab = QtGui.QWidget()
self.settings.gridLayout_3 = QtGui.QGridLayout(self.settings.report_tab)
self.settings.report_groupbox = QtGui.QGroupBox(self.settings.report_tab)
self.settings.report_groupbox.setTitle("Report Type")
self.settings.gridLayout_4 = QtGui.QGridLayout(self.settings.report_groupbox)
self.settings.interview_radio = QtGui.QRadioButton(self.settings.report_groupbox)
self.settings.interview_radio.setText("Interview")
self.settings.gridLayout_4.addWidget(self.settings.interview_radio, 0, 0, 1, 1)
self.settings.worker_radio = QtGui.QRadioButton(self.settings.report_groupbox)
self.settings.worker_radio.setText("Worker")
self.settings.gridLayout_4.addWidget(self.settings.worker_radio, 0, 1, 1, 1)
self.settings.task_radio = QtGui.QRadioButton(self.settings.report_groupbox)
self.settings.task_radio.setText("Task")
self.settings.gridLayout_4.addWidget(self.settings.task_radio, 1, 0, 1, 1)
self.settings.client_radio = QtGui.QRadioButton(self.settings.report_groupbox)
self.settings.client_radio.setText("Client")
self.settings.gridLayout_4.addWidget(self.settings.client_radio, 1, 1, 1, 1)
self.settings.price_radio = QtGui.QRadioButton(self.settings.report_groupbox)
self.settings.price_radio.setText("Price")
self.settings.gridLayout_4.addWidget(self.settings.price_radio, 2, 0, 1, 1)
self.settings.gridLayout_3.addWidget(self.settings.report_groupbox, 0, 0, 3, 2)
self.settings.from_label = QtGui.QLabel(self.settings.report_tab)
self.settings.from_label.setText("From")
self.settings.gridLayout_3.addWidget(self.settings.from_label, 0, 2, 1, 1)
self.settings.from_date = QtGui.QDateEdit(self.settings.report_tab)
self.settings.gridLayout_3.addWidget(self.settings.from_date, 0, 4, 1, 1)
self.settings.to_label = QtGui.QLabel(self.settings.report_tab)
self.settings.to_label.setText("To")
self.settings.gridLayout_3.addWidget(self.settings.to_label, 1, 2, 1, 1)
temp=QtCore.QDate()
self.settings.to_date = QtGui.QDateEdit(self.settings.report_tab)
self.settings.to_date.setDate(temp.currentDate())
self.settings.gridLayout_3.addWidget(self.settings.to_date, 1, 4, 1, 1)
self.settings.preview_report = QtGui.QPlainTextEdit(self.settings.report_tab)
self.settings.gridLayout_3.addWidget(self.settings.preview_report, 4, 0, 1, 5)
self.settings.form_report_button = QtGui.QToolButton(self.settings.report_tab)
self.settings.form_report_button.setText("Form")
self.settings.gridLayout_3.addWidget(self.settings.form_report_button, 5, 0, 1, 2)
self.settings.file_label = QtGui.QLabel(self.settings.report_tab)
self.settings.file_label.setText("File")
self.settings.gridLayout_3.addWidget(self.settings.file_label, 2, 2, 1, 1)
self.settings.file_edit = QtGui.QLineEdit(self.settings.report_tab)
self.settings.gridLayout_3.addWidget(self.settings.file_edit, 2, 3, 1, 2)
self.settings.tabWidget.addTab(self.settings.report_tab, "Reports")
self.settings.add_type_tab = QtGui.QWidget()
self.settings.gridLayout_6 = QtGui.QGridLayout(self.settings.add_type_tab)
self.settings.type_groupbox = QtGui.QGroupBox(self.settings.add_type_tab)
self.settings.type_groupbox.setTitle("Type")
self.settings.gridLayout_5 = QtGui.QGridLayout(self.settings.type_groupbox)
self.settings.spec_radio = QtGui.QRadioButton(self.settings.type_groupbox)
self.settings.spec_radio.setText("Specialization")
self.settings.gridLayout_5.addWidget(self.settings.spec_radio, 0, 0, 1, 1)
self.settings.dayoff_radio = QtGui.QRadioButton(self.settings.type_groupbox)
self.settings.dayoff_radio.setText("Dayoff")
self.settings.gridLayout_5.addWidget(self.settings.dayoff_radio, 1, 0, 1, 1)
self.settings.article_radio = QtGui.QRadioButton(self.settings.type_groupbox)
self.settings.article_radio.setText("Article")
self.settings.gridLayout_5.addWidget(self.settings.article_radio, 2, 0, 1, 1)
self.settings.gridLayout_6.addWidget(self.settings.type_groupbox, 0, 0, 2, 1)
self.settings.type_add_button = QtGui.QToolButton(self.settings.add_type_tab)
self.settings.type_add_button.setText("Add")
self.settings.gridLayout_6.addWidget(self.settings.type_add_button, 0, 1, 1, 1)
self.settings.type_save_button = QtGui.QToolButton(self.settings.add_type_tab)
self.settings.type_save_button.setText("Save")
self.settings.gridLayout_6.addWidget(self.settings.type_save_button, 0, 2, 1, 1)
self.settings.type_del_button = QtGui.QToolButton(self.settings.add_type_tab)
self.settings.type_del_button.setText("Delete")
self.settings.gridLayout_6.addWidget(self.settings.type_del_button, 1, 1, 1, 1)
self.settings.type_refresh_button = QtGui.QToolButton(self.settings.add_type_tab)
self.settings.type_refresh_button.setText("Refresh")
self.settings.gridLayout_6.addWidget(self.settings.type_refresh_button, 1, 2, 1, 1)
self.settings.type_view = QtGui.QTableView(self.settings.add_type_tab)
self.settings.gridLayout_6.addWidget(self.settings.type_view, 2, 0, 1, 3)
self.settings.tabWidget.addTab(self.settings.add_type_tab, "Types")
self.settings.user_tab = QtGui.QWidget()
self.settings.gridLayout_7 = QtGui.QGridLayout(self.settings.user_tab)
self.settings.user_view = QtGui.QTableView(self.settings.user_tab)
self.settings.gridLayout_7.addWidget(self.settings.user_view, 0, 0, 5, 1)
self.settings.user_add_button = QtGui.QToolButton(self.settings.user_tab)
self.settings.user_add_button.setText(" Add ")
self.settings.gridLayout_7.addWidget(self.settings.user_add_button, 0, 1, 1, 1)
self.settings.user_del_button = QtGui.QToolButton(self.settings.user_tab)
self.settings.user_del_button.setText(" Delete")
self.settings.gridLayout_7.addWidget(self.settings.user_del_button, 1, 1, 1, 1)
self.settings.user_save_button = QtGui.QToolButton(self.settings.user_tab)
self.settings.user_save_button.setText(" Save ")
self.settings.gridLayout_7.addWidget(self.settings.user_save_button, 2, 1, 1, 1)
self.settings.user_refresh_button = QtGui.QToolButton(self.settings.user_tab)
self.settings.user_refresh_button.setText("Refresh")
self.settings.gridLayout_7.addWidget(self.settings.user_refresh_button, 3, 1, 1, 1)
self.settings.tabWidget.addTab(self.settings.user_tab, "Users")
self.settings.gridLayout_8.addWidget(self.settings.tabWidget,0,0,1,1)
self.settings.ok_button = QtGui.QToolButton(self.settings)
self.settings.ok_button.setText(" Ok ")
self.settings.gridLayout_8.addWidget(self.settings.ok_button, 1, 0, 1, 1)
QtCore.QObject.connect(self.settings.srefresh_button, QtCore.SIGNAL("clicked()"), self.settings_menu_all_refresh_pressed)
QtCore.QObject.connect(self.settings.form_report_button, QtCore.SIGNAL("clicked()"), self.settings_menu_report_form_pressed)
QtCore.QObject.connect(self.settings.type_add_button, QtCore.SIGNAL("clicked()"), self.settings_menu_type_add_pressed)
QtCore.QObject.connect(self.settings.type_del_button, QtCore.SIGNAL("clicked()"), self.settings_menu_type_del_pressed)
QtCore.QObject.connect(self.settings.type_save_button, QtCore.SIGNAL("clicked()"), self.settings_menu_type_save_pressed)
QtCore.QObject.connect(self.settings.type_refresh_button, QtCore.SIGNAL("clicked()"), self.settings_menu_type_refresh_pressed)
QtCore.QObject.connect(self.settings.user_add_button, QtCore.SIGNAL("clicked()"), self.settings_menu_user_add_pressed)
QtCore.QObject.connect(self.settings.user_del_button, QtCore.SIGNAL("clicked()"), self.settings_menu_user_del_pressed)
QtCore.QObject.connect(self.settings.user_save_button, QtCore.SIGNAL("clicked()"), self.settings_menu_user_save_pressed)
QtCore.QObject.connect(self.settings.user_refresh_button, QtCore.SIGNAL("clicked()"), self.settings_menu_user_refresh_pressed)
QtCore.QObject.connect(self.settings.ok_button, QtCore.SIGNAL("clicked()"), self.settings_menu_ok_pressed)
QtCore.QMetaObject.connectSlotsByName(self.settings)
self.settings.show()
#----------------------------------------------------------------------------------------------
def settings_menu_all_refresh_pressed (self):
print "settings menu all refresh pressed"
print self.settings.article_radio.isChecked()
print self.settings.address_radio.isChecked()
print self.settings.client_radio.isChecked()
def settings_menu_report_form_pressed (self):
print "settings menu report form pressed"
def settings_menu_type_add_pressed (self):
print "settings menu add type pressed"
def settings_menu_type_del_pressed (self):
print "settings menu del type pressed"
def settings_menu_type_save_pressed (self):
print "settings menu save type pressed"
def settings_menu_type_refresh_pressed (self):
print "settings menu refresh type pressed"
def settings_menu_user_add_pressed (self):
print "settings menu user add pressed"
def settings_menu_user_del_pressed (self):
print "settings menu user del pressed"
def settings_menu_user_save_pressed (self):
print "settings menu user save pressed"
def settings_menu_user_refresh_pressed(self):
print "settings menu user refresh pressed"
def settings_menu_ok_pressed(self):
print "settings menu ok pressed"
self.settings.hide()
#----------------------------------------------------------------------------------------------
def click_menu_about (self):
print "click_menu_about"
warning_message = QtGui.QMessageBox(self.interview)
warning_message.setWindowTitle("About")
warning_message.setInformativeText("about text")
warning_message.show()
return None
#----------------------------------------------------------------------------------------------
#-----------------Interview methods------------------------------------------------------------
#----------------------------------------------------------------------------------------------
def click_save_interview (self):
print "save_interview_button been pressed"
date_now = QtCore.QDateTime()
date_now = date_now.currentDateTime()
for i in range(self.interview_model.rowCount()):
ix = self.interview_model.index(i,4)
ixx = self.interview_model.index(i,0)
datetxt = self.interview_model.data(ix).toString()
date = QtCore.QDateTime(int(datetxt[:4]),int(datetxt[5:7]),int(datetxt[8:10]),int(datetxt[11:13]),int(datetxt[14:16]),0,0,0)
if ((self.interview_model.data(ixx).toString()) == '')and(date<date_now):
warning_message = QtGui.QMessageBox(self.interview)
warning_message.setWindowTitle("Warning")
warning_message.setInformativeText("You try to add record 'by yesterday'")
warning_message.show()
return None
self.interview_model.submitAll()
self.click_refresh_interview()
#----------------------------------------------------------------------------------------------
def click_refresh_interview (self):
print "refresh_interview_button been pressed"
self.interview_model.select()
self.del_interview_button.setEnabled(False)
self.accept_interview_button.setEnabled(False)
self.reject_interview_button.setEnabled(False)
#----------------------------------------------------------------------------------------------
def click_interview_view (self):
print "interview viev click"
self.del_interview_button.setEnabled(True)
query = QtSql.QSqlQuery()
sel_m = self.interview_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
row_num = indexes[0].row()
ix = self.interview_model.index(row_num,0)
if (self.interview_model.data(ix).toString()) != '':
interview_id = int (self.interview_model.data(ix).toString())
else:
self.accept_interview_button.setEnabled(False)
self.reject_interview_button.setEnabled(False)
return None
query.exec_("SELECT status FROM interview WHERE id=%d"%(interview_id))
query.next()
print query.value(0).toString()
if query.value(0).toString()!='1':
self.accept_interview_button.setEnabled(False)
self.reject_interview_button.setEnabled(False)
return None
else:
self.accept_interview_button.setEnabled(True)
self.reject_interview_button.setEnabled(True)
#----------------------------------------------------------------------------------------------
def click_add_interview (self):
print "add_interview_button been pressed"
row = self.interview_model.rowCount()
self.interview_model.insertRow(row)
self.cdatetime = QtCore.QDateTime()
self.interview_model.setData (self.interview_model.index(row,4), QtCore.QVariant(self.cdatetime.currentDateTime()))
self.interview_model.setData (self.interview_model.index(row,12), QtCore.QVariant(""))
self.interview_model.setData (self.interview_model.index(row,13), QtCore.QVariant("N/A"))
#----------------------------------------------------------------------------------------------
def click_del_interview (self):
print "del_interview_button been pressed"
query = QtSql.QSqlQuery()
sel_m = self.interview_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
if len(indexes)!=1:
warning_message = QtGui.QMessageBox(self.interview)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Select ONE row to delete")
warning_message.show()
return None
row_num = indexes[0].row()
ix = self.interview_model.index(row_num,0)
if (self.interview_model.data(ix).toString()) != '':
interview_id = int (self.interview_model.data(ix).toString())
self.delete_interview_sure = QtGui.QDialog (self.interview)
self.delete_interview_sure.resize(190, 100)
self.delete_interview_sure.setMinimumSize(QtCore.QSize(190, 100))
self.delete_interview_sure.setMaximumSize(QtCore.QSize(190, 100))
self.delete_interview_sure.setWindowTitle("Delete")
self.delete_interview_sure.gridLayout = QtGui.QGridLayout(self.delete_interview_sure)
self.delete_interview_sure.name_label = QtGui.QLabel(self.delete_interview_sure)
if self.interview_model.data(ix).toString()=='':
ix2 = self.interview_model.index(row_num,1)
ix3 = self.interview_model.index(row_num,2)
self.delete_interview_sure.name_label.setText(self.interview_model.data(ix2).toString()+" "+self.interview_model.data(ix3).toString())
else:
query.exec_("SELECT surname, name FROM interview WHERE id=%d"%(interview_id))
query.next()
self.delete_interview_sure.name_label.setText(query.value(0).toString() + " "+query.value(1).toString())
self.delete_interview_sure.gridLayout.addWidget(self.delete_interview_sure.name_label, 0, 0, 1, 2)
self.delete_interview_sure.yes_button = QtGui.QPushButton(self.delete_interview_sure)
self.delete_interview_sure.yes_button.setText("Ok")
self.delete_interview_sure.gridLayout.addWidget(self.delete_interview_sure.yes_button, 3, 0, 1, 1)
self.delete_interview_sure.no_button = QtGui.QPushButton(self.delete_interview_sure)
self.delete_interview_sure.no_button.setText("Cancel")
self.delete_interview_sure.gridLayout.addWidget(self.delete_interview_sure.no_button, 3, 1, 1, 1)
self.delete_interview_sure.label = QtGui.QLabel(self.delete_interview_sure)
self.delete_interview_sure.label.setText("Are you sure?")
self.delete_interview_sure.gridLayout.addWidget(self.delete_interview_sure.label, 1, 0, 1, 1)
QtCore.QObject.connect(self.delete_interview_sure.yes_button,QtCore.SIGNAL("clicked()"),self.delete_interview_sure_yes_pressed)
QtCore.QObject.connect(self.delete_interview_sure.no_button, QtCore.SIGNAL("clicked()"),self.delete_interview_sure_no_pressed)
QtCore.QMetaObject.connectSlotsByName(self.interview)
self.delete_interview_sure.exec_()
#----------------------------------------------------------------------------------------------
def delete_interview_sure_yes_pressed (self):
print "Delete_interview_sure_yes button been pressed"
self.delete_interview_sure.hide()
sel_m = self.interview_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
row_num = indexes[0].row()
ix = self.interview_model.index(row_num,0)
if self.interview_model.data(ix).toString()=='':
self.interview_model.removeRow(row_num)
return None
self.interview_model.removeRows(row_num, 1, QtCore.QModelIndex())
self.interview_model.submitAll()
self.click_refresh_interview()
def delete_interview_sure_no_pressed (self):
print "Delete_interview_sure_no button been pressed"
self.delete_interview_sure.hide()
#----------------------------------------------------------------------------------------------
def click_accept_interview(self):
print "accept_interview button been pressed"
query = QtSql.QSqlQuery()
sel_m = self.interview_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
if len(indexes)!=1:
warning_message = QtGui.QMessageBox(self.interview)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Select ONE row to accept")
warning_message.show()
return None
row_num = indexes[0].row()
ix = self.interview_model.index(row_num,0)
if (self.interview_model.data(ix).toString()) != '':
interview_id = int (self.interview_model.data(ix).toString())
query.exec_("SELECT status, surname,name,date FROM interview WHERE id=%d"%(interview_id))
query.next()
if (query.value(0).toString())== '1':
datetxt = query.value(3).toString()
date = QtCore.QDateTime(int(datetxt[:4]),int(datetxt[5:7]),int(datetxt[8:10]),int(datetxt[11:13]),int(datetxt[14:16]),0,0,0)
date_now = QtCore.QDateTime()
date_now = date_now.currentDateTime()
if date_now<date:
warning_message = QtGui.QMessageBox(self.interview)
warning_message.setWindowTitle("Warning")
warning_message.setInformativeText("You can't accept before interview carrying out")
warning_message.show()
return None
if (query.value(0).toString())== '2':
name = query.value(1).toString()+" "+query.value(2).toString()
warning_message = QtGui.QMessageBox(self.interview)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText(name+" already accepted")
warning_message.show()
return None
if (query.value(0).toString())== '3':
name = query.value(1).toString()+" "+query.value(2).toString()
warning_message = QtGui.QMessageBox(self.interview)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText(name+" already rejected")
warning_message.show()
return None
self.accept_interview_sure = QtGui.QDialog(self.interview)
self.accept_interview_sure.setWindowTitle("Accept")
self.accept_interview_sure.resize(170,130)
self.accept_interview_sure.setMinimumSize(QtCore.QSize(170, 130))
self.accept_interview_sure.setMaximumSize(QtCore.QSize(170, 130))
self.accept_interview_sure.gridLayout = QtGui.QGridLayout(self.accept_interview_sure)
self.accept_interview_sure.name_label = QtGui.QLabel(self.accept_interview_sure)
query.exec_("SELECT surname,name FROM interview WHERE id=%d"%(interview_id))
query.next()
self.accept_interview_sure.name_label.setText(query.value(0).toString()+" "+query.value(1).toString())
self.accept_interview_sure.gridLayout.addWidget(self.accept_interview_sure.name_label, 0, 0, 1, 2)
self.accept_interview_sure.label = QtGui.QLabel(self.accept_interview_sure)
self.accept_interview_sure.label.setText("to post")
self.accept_interview_sure.gridLayout.addWidget(self.accept_interview_sure.label, 1, 0, 1, 2)
self.accept_interview_sure.postbox = QtGui.QComboBox(self.accept_interview_sure)
query.exec_("SELECT id, name FROM specialization ORDER BY id")
i=0
self.interview_cr_table=[]
while (query.next()):
self.accept_interview_sure.postbox.insertItem(i,query.value(1).toString(),QtCore.QVariant(i))
self.interview_cr_table[i:]=[int(query.value(0).toString())]
i+=1
self.accept_interview_sure.gridLayout.addWidget(self.accept_interview_sure.postbox, 2, 0, 1, 2)
self.accept_interview_sure.yes_button = QtGui.QPushButton(self.accept_interview_sure)
self.accept_interview_sure.yes_button.setText("Ok")
self.accept_interview_sure.gridLayout.addWidget(self.accept_interview_sure.yes_button, 3, 0, 1, 1)
self.accept_interview_sure.no_button = QtGui.QPushButton(self.accept_interview_sure)
self.accept_interview_sure.no_button.setText("Cancel")
self.accept_interview_sure.gridLayout.addWidget(self.accept_interview_sure.no_button, 3, 1, 1, 1)
QtCore.QObject.connect(self.accept_interview_sure.yes_button,QtCore.SIGNAL("clicked()"),self.accept_interview_sure_yes_pressed)
QtCore.QObject.connect(self.accept_interview_sure.no_button, QtCore.SIGNAL("clicked()"),self.accept_interview_sure_no_pressed)
QtCore.QMetaObject.connectSlotsByName(self.interview)
self.accept_interview_sure.exec_()
#----------------------------------------------------------------------------------------------
def accept_interview_sure_yes_pressed (self):
print "accept interview sure yes button been pressed"
self.accept_interview_sure.hide()
sel_m = self.interview_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
row_num = indexes[0].row()
ix = self.interview_model.index(row_num,0)
interview_id = int (self.interview_model.data(ix).toString())
query = QtSql.QSqlQuery()
query.exec_("UPDATE interview SET status=2 WHERE id=%d"%(interview_id))
query.exec_ ("SELECT max(id) FROM worker")
query.next()
worker_id = int( query.value(0).toString())
spec_id = self.interview_cr_table[self.accept_interview_sure.postbox.currentIndex()]
query.exec_("INSERT INTO worker_specialization (start,specialization_id,worker_id) VALUES(now(),%d,%d)"%(spec_id,worker_id))
self.interview_model.select()
self.employee_model.select()
def accept_interview_sure_no_pressed (self):
print "accept interview sure no button been pressed"
self.accept_interview_sure.hide()
#----------------------------------------------------------------------------------------------
def click_reject_interview(self):
print "reject_interview button been pressed"
query = QtSql.QSqlQuery()
sel_m = self.interview_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
if len(indexes)!=1:
warning_message = QtGui.QMessageBox(self.interview)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Select ONE row to reject")
warning_message.show()
return None
row_num = indexes[0].row()
ix = self.interview_model.index(row_num,0)
interview_id = int (self.interview_model.data(ix).toString())
query.exec_("SELECT status, surname,name,date FROM interview WHERE id=%d"%(interview_id))
query.next()
if (query.value(0).toString())== '1':
datetxt = query.value(3).toString()
date = QtCore.QDateTime(int(datetxt[:4]),int(datetxt[5:7]),int(datetxt[8:10]),int(datetxt[11:13]),int(datetxt[14:16]),0,0,0)
date_now = QtCore.QDateTime()
date_now = date_now.currentDateTime()
if date_now<date:
warning_message = QtGui.QMessageBox(self.interview)
warning_message.setWindowTitle("Warning")
warning_message.setInformativeText("You can't reject before interview carrying out")
warning_message.show()
return None
if (query.value(0).toString())== '2':
name = query.value(1).toString()+" "+query.value(2).toString()
warning_message = QtGui.QMessageBox(self.interview)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText(name+" already accepted")
warning_message.show()
return None
if (query.value(0).toString())== '3':
name = query.value(1).toString()+" "+query.value(2).toString()
warning_message = QtGui.QMessageBox(self.interview)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText(name+" already rejected")
warning_message.show()
return None
self.reject_interview_sure = QtGui.QDialog (self.interview)
self.reject_interview_sure.resize(190, 100)
self.reject_interview_sure.setMinimumSize(QtCore.QSize(190, 100))
self.reject_interview_sure.setMaximumSize(QtCore.QSize(190, 100))
self.reject_interview_sure.setWindowTitle("Reject")
self.reject_interview_sure.gridLayout = QtGui.QGridLayout(self.reject_interview_sure)
self.reject_interview_sure.name_label = QtGui.QLabel(self.reject_interview_sure)
query.exec_("SELECT surname, name FROM interview WHERE id=%d"%(interview_id))
query.next()
self.reject_interview_sure.name_label.setText(query.value(0).toString() + " "+query.value(1).toString())
self.reject_interview_sure.gridLayout.addWidget(self.reject_interview_sure.name_label, 0, 0, 1, 2)
self.reject_interview_sure.yes_button = QtGui.QPushButton(self.reject_interview_sure)
self.reject_interview_sure.yes_button.setText("Ok")
self.reject_interview_sure.gridLayout.addWidget(self.reject_interview_sure.yes_button, 3, 0, 1, 1)
self.reject_interview_sure.no_button = QtGui.QPushButton(self.reject_interview_sure)
self.reject_interview_sure.no_button.setText("Cancel")
self.reject_interview_sure.gridLayout.addWidget(self.reject_interview_sure.no_button, 3, 1, 1, 1)
self.reject_interview_sure.label = QtGui.QLabel(self.reject_interview_sure)
self.reject_interview_sure.label.setText("Are you sure?")
self.reject_interview_sure.gridLayout.addWidget(self.reject_interview_sure.label, 1, 0, 1, 1)
QtCore.QObject.connect(self.reject_interview_sure.yes_button,QtCore.SIGNAL("clicked()"),self.reject_interview_sure_yes_pressed)
QtCore.QObject.connect(self.reject_interview_sure.no_button, QtCore.SIGNAL("clicked()"),self.reject_interview_sure_no_pressed)
QtCore.QMetaObject.connectSlotsByName(self.interview)
self.reject_interview_sure.exec_()
#----------------------------------------------------------------------------------------------
def reject_interview_sure_yes_pressed (self):
print "reject_interview_sure_yes button been pressed"
self.reject_interview_sure.hide()
sel_m = self.interview_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
row_num = indexes[0].row()
ix = self.interview_model.index(row_num,0)
interview_id = int (self.interview_model.data(ix).toString())
query = QtSql.QSqlQuery()
query.exec_("UPDATE interview SET status=3 WHERE id=%d"%(interview_id))
self.click_refresh_interview()
def reject_interview_sure_no_pressed (self):
print "reject_interview_sure_no button been pressed"
self.reject_interview_sure.hide()
#----------------------------------------------------------------------------------------------
#-----------------Employee methods-------------------------------------------------------------
#----------------------------------------------------------------------------------------------
def submit_break(self):
date_now = QtCore.QDate()
date_now = date_now.currentDate()
for i in range(self.break_model.rowCount()):
ix = self.break_model.index(i,1)
ixx = self.break_model.index(i,0)
ixxx = self.break_model.index(i,2)
datetxt = self.break_model.data(ix).toString()
fdatetxt = self.break_model.data(ixxx).toString()
date = QtCore.QDate(int(datetxt[:4]),int(datetxt[5:7]),int(datetxt[8:10]))
fdate = QtCore.QDate(int(fdatetxt[:4]),int(fdatetxt[5:7]),int(fdatetxt[8:10]))
if ((self.break_model.data(ixx).toString()) == '')and(date<date_now):
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Warning")
warning_message.setInformativeText("You try to add record 'by yesterday'")
warning_message.show()
return None
if (date>=fdate):
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Warning")
warning_message.setInformativeText("Finish date must be more eventual start date")
warning_message.show()
return None
for i in range (self.break_model.rowCount()):
ix1 = self.break_model.index(i,1)
ix2 = self.break_model.index(i,2)
stdtxt = self.break_model.data(ix1).toString()
stftxt = self.break_model.data(ix2).toString()
std=QtCore.QDate(int(stdtxt[:4]),int(stdtxt[5:7]),int(stdtxt[8:10]))
stf=QtCore.QDate(int(stftxt[:4]),int(stftxt[5:7]),int(stftxt[8:10]))
for j in range(self.break_model.rowCount()):
ix3 = self.break_model.index(j,1)
ix4 = self.break_model.index(j,2)
stdtxt2 = self.break_model.data(ix3).toString()
stftxt2 = self.break_model.data(ix4).toString()
std2=QtCore.QDate(int(stdtxt2[:4]),int(stdtxt2[5:7]),int(stdtxt2[8:10]))
stf2=QtCore.QDate(int(stftxt2[:4]),int(stftxt2[5:7]),int(stftxt2[8:10]))
if (std2<=std)and(std<stf2)and(i!=j):
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Warning")
warning_message.setInformativeText("Dayoff can't intersect")
warning_message.show()
return None
self.break_model.submitAll()
self.break_view.showColumn(3)
self.break_model.select()
def submit_spec(self):
date_now = QtCore.QDate()
date_now = date_now.currentDate()
for i in range(self.spec_model.rowCount()):
ix = self.spec_model.index(i,1)
ixx = self.spec_model.index(i,0)
datetxt = self.spec_model.data(ix).toString()
date = QtCore.QDate(int(datetxt[:4]),int(datetxt[5:7]),int(datetxt[8:10]))
if ((self.spec_model.data(ixx).toString()) == '')and(date<date_now):
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Warning")
warning_message.setInformativeText("You try to add record 'by yesterday'")
warning_message.show()
return None
self.spec_model.submitAll()
self.spec_view.showColumn(2)
self.spec_model.select()
def click_save_employee(self):
print "save_employee_button been pressed"
self.submit_break()
self.submit_spec()
self.employee_model.submitAll()
self.click_refresh_employee()
#----------------------------------------------------------------------------------------------
def click_refresh_employee(self):
print "refresh_employee_button been pressed"
self.employee_model.select()
self.break_model.select()
self.break_view.showColumn(3)
self.spec_model.select()
self.spec_view.showColumn(2)
self.add_break_button.setEnabled(False)
self.add_spec_button.setEnabled(False)
self.del_break_button.setEnabled(False)
self.del_spec_button.setEnabled(False)
self.del_employee_button.setEnabled(False)
self.fire_employee_button.setEnabled(False)
self.detail_employee_button.setEnabled(False)
#----------------------------------------------------------------------------------------------
def click_add_break(self):
print "add_break_button been pressed"
query = QtSql.QSqlQuery()
if get_employee_id(self.break_model.filter())==0:
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Select employee which to add dayoff")
warning_message.show()
return None
employee_id = get_employee_id(self.break_model.filter())
query.exec_("SELECT fired FROM worker WHERE id=%d"%(employee_id))
query.next()
self.break_model.select()
self.submit_break()
self.break_view.sortByColumn(1)
self.add_break_dialog = QtGui.QDialog(self.employee)
self.add_break_dialog.setWindowTitle("Add break")
self.add_break_dialog.resize(173, 130)
self.add_break_dialog.setMinimumSize(QtCore.QSize(173, 130))
self.add_break_dialog.setMaximumSize(QtCore.QSize(173, 130))
self.add_break_dialog.gridLayout = QtGui.QGridLayout(self.add_break_dialog)
self.add_break_dialog.label = QtGui.QLabel(self.add_break_dialog)
self.add_break_dialog.label.setText("Add break to")
self.add_break_dialog.gridLayout.addWidget(self.add_break_dialog.label, 0, 0, 1, 2)
self.add_break_dialog.name_label = QtGui.QLabel(self.add_break_dialog)
query.exec_("SELECT surname, name FROM worker WHERE id=%d"%(get_employee_id(self.break_model.filter())))
query.next()
self.add_break_dialog.name_label.setText(query.value(0).toString()+" "+query.value(1).toString())
self.add_break_dialog.gridLayout.addWidget(self.add_break_dialog.name_label, 1, 0, 1, 2)
self.add_break_dialog.comboBox = QtGui.QComboBox(self.add_break_dialog)
query.exec_("SELECT id, name FROM dayoff_type ORDER BY id")
self.break_cr_table = []
i=0
while (query.next()):
self.add_break_dialog.comboBox.insertItem(i,query.value(1).toString(),QtCore.QVariant(i))
self.break_cr_table[i:]=[int(query.value(0).toString())]
i+=1
self.add_break_dialog.gridLayout.addWidget(self.add_break_dialog.comboBox, 2, 0, 1, 2)
self.add_break_dialog.yes_button = QtGui.QPushButton(self.add_break_dialog)
self.add_break_dialog.yes_button.setText("Ok")
self.add_break_dialog.gridLayout.addWidget(self.add_break_dialog.yes_button, 3, 0, 1, 1)
self.add_break_dialog.no_button = QtGui.QPushButton(self.add_break_dialog)
self.add_break_dialog.no_button.setText("Cancel")
self.add_break_dialog.gridLayout.addWidget(self.add_break_dialog.no_button, 3, 1, 1, 1)
QtCore.QObject.connect(self.add_break_dialog.yes_button,QtCore.SIGNAL("clicked()"),self.add_break_sure_yes_pressed)
QtCore.QObject.connect(self.add_break_dialog.no_button, QtCore.SIGNAL("clicked()"),self.add_break_sure_no_pressed)
QtCore.QMetaObject.connectSlotsByName(self.interview)
self.add_break_dialog.exec_()
def add_break_sure_yes_pressed (self):
print "Add_break_sure_yes button been pressed"
self.add_break_dialog.hide()
employee_id = get_employee_id(self.break_model.filter())#int (self.employee_model.data(ix).toString())
row = self.break_model.rowCount()
self.break_model.insertRow(row)
self.cdatetime = QtCore.QDate()
self.break_model.setData (self.break_model.index(row,1), QtCore.QVariant(self.cdatetime.currentDate()))
self.break_model.setData (self.break_model.index(row,2), QtCore.QVariant(self.cdatetime.currentDate()))
self.break_model.setData (self.break_model.index(row,3), QtCore.QVariant(self.break_cr_table[self.add_break_dialog.comboBox.currentIndex()]))
self.break_model.setData (self.break_model.index(row,4), QtCore.QVariant(employee_id))
self.break_view.hideColumn(3)
def add_break_sure_no_pressed (self):
print "Add_spec_sure_no button been pressed"
self.add_break_dialog.hide()
#---------------------------------------------------------------------------------------------
def click_del_break(self):
print "del_break_button been pressed"
query = QtSql.QSqlQuery()
if get_employee_id(self.break_model.filter())==0:
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Select employee which to delete dayoff")
warning_message.show()
return None
employee_id = get_employee_id(self.break_model.filter())
sel_m = self.break_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
if len(indexes)!=1:
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Select ONE row to delete")
warning_message.show()
return None
self.del_break_dialog = QtGui.QDialog(self.employee)
self.del_break_dialog.setWindowTitle("Delete")
self.del_break_dialog.resize(190, 100)
self.del_break_dialog.setMinimumSize(QtCore.QSize(190, 100))
self.del_break_dialog.setMaximumSize(QtCore.QSize(190, 100))
self.del_break_dialog.gridLayout = QtGui.QGridLayout(self.del_break_dialog)
self.del_break_dialog.label = QtGui.QLabel(self.del_break_dialog)
self.del_break_dialog.label.setText("Delete break from")
self.del_break_dialog.gridLayout.addWidget(self.del_break_dialog.label, 0, 0, 1, 2)
self.del_break_dialog.name_label = QtGui.QLabel(self.del_break_dialog)
query.exec_("SELECT surname,name FROM worker WHERE id=%d"%(get_employee_id(self.break_model.filter())))
query.next()
self.del_break_dialog.name_label.setText(query.value(0).toString()+" "+query.value(1).toString())
self.del_break_dialog.gridLayout.addWidget(self.del_break_dialog.name_label, 1, 0, 1, 2)
self.del_break_dialog.yes_button = QtGui.QPushButton(self.del_break_dialog)
self.del_break_dialog.yes_button.setText("Ok")
self.del_break_dialog.gridLayout.addWidget(self.del_break_dialog.yes_button, 2, 0, 1, 1)
self.del_break_dialog.no_button = QtGui.QPushButton(self.del_break_dialog)
self.del_break_dialog.no_button.setText("Cancel")
self.del_break_dialog.gridLayout.addWidget(self.del_break_dialog.no_button, 2, 1, 1, 1)
QtCore.QObject.connect(self.del_break_dialog.yes_button,QtCore.SIGNAL("clicked()"),self.del_break_sure_yes_pressed)
QtCore.QObject.connect(self.del_break_dialog.no_button, QtCore.SIGNAL("clicked()"),self.del_break_sure_no_pressed)
QtCore.QMetaObject.connectSlotsByName(self.employee)
self.del_break_dialog.exec_()
def del_break_sure_yes_pressed(self):
print "del_break_sure_yes button been pressed"
self.del_break_dialog.hide()
sel_m = self.break_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
row_num = indexes[0].row()
ix = self.break_model.index(row_num,0)
if self.break_model.data(ix).toString()=='':
self.break_model.removeRow(row_num)
return None
break_id = int (self.break_model.data(ix).toString())
query = QtSql.QSqlQuery()
query.exec_("DELETE FROM dayoff WHERE id=%d"%(break_id))
self.break_model.select()
def del_break_sure_no_pressed(self):
print "del_break_sure_no button been pressed"
self.del_break_dialog.hide()
#----------------------------------------------------------------------------------------------
def click_add_spec(self):
print "add_spec_button been pressed"
query = QtSql.QSqlQuery()
if get_employee_id(self.break_model.filter())==0:
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Select employee which to add specialization")
warning_message.show()
return None
employee_id = get_employee_id(self.break_model.filter())
self.submit_spec()
self.spec_model.select()
self.add_spec_dialog = QtGui.QDialog(self.employee)
self.add_spec_dialog.setWindowTitle("Add specialization")
self.add_spec_dialog.resize(173, 130)
self.add_spec_dialog.setMinimumSize(QtCore.QSize(173, 130))
self.add_spec_dialog.setMaximumSize(QtCore.QSize(173, 130))
self.add_spec_dialog.gridLayout = QtGui.QGridLayout(self.add_spec_dialog)
self.add_spec_dialog.label = QtGui.QLabel(self.add_spec_dialog)
self.add_spec_dialog.label.setText("Add specialization to")
self.add_spec_dialog.gridLayout.addWidget(self.add_spec_dialog.label, 0, 0, 1, 2)
self.add_spec_dialog.name_label = QtGui.QLabel(self.add_spec_dialog)
query.exec_("SELECT surname,name FROM worker WHERE id=%d"%(get_employee_id(self.spec_model.filter())))
query.next()
self.add_spec_dialog.name_label.setText(query.value(0).toString()+" "+query.value(1).toString())
self.add_spec_dialog.gridLayout.addWidget(self.add_spec_dialog.name_label, 1, 0, 1, 2)
self.add_spec_dialog.comboBox = QtGui.QComboBox(self.add_spec_dialog)
query.exec_("SELECT id, name FROM specialization ORDER BY id")
self.spec_cr_table=[]
i=0
while (query.next()):
self.add_spec_dialog.comboBox.insertItem(i,query.value(1).toString(),QtCore.QVariant(i))
self.spec_cr_table[i:]=[int(query.value(0).toString())]
i+=1
self.add_spec_dialog.gridLayout.addWidget(self.add_spec_dialog.comboBox, 2, 0, 1, 2)
self.add_spec_dialog.yes_button = QtGui.QPushButton(self.add_spec_dialog)
self.add_spec_dialog.yes_button.setText("Ok")
self.add_spec_dialog.gridLayout.addWidget(self.add_spec_dialog.yes_button, 3, 0, 1, 1)
self.add_spec_dialog.no_button = QtGui.QPushButton(self.add_spec_dialog)
self.add_spec_dialog.no_button.setText("Cancel")
self.add_spec_dialog.gridLayout.addWidget(self.add_spec_dialog.no_button, 3, 1, 1, 1)
QtCore.QObject.connect(self.add_spec_dialog.yes_button,QtCore.SIGNAL("clicked()"),self.add_spec_sure_yes_pressed)
QtCore.QObject.connect(self.add_spec_dialog.no_button, QtCore.SIGNAL("clicked()"),self.add_spec_sure_no_pressed)
QtCore.QMetaObject.connectSlotsByName(self.interview)
self.add_spec_dialog.exec_()
def add_spec_sure_yes_pressed (self):
print "Add_spec_sure_yes button been pressed"
self.add_spec_dialog.hide()
employee_id = get_employee_id(self.break_model.filter())
row = self.spec_model.rowCount()
query = QtSql.QSqlQuery()
query.exec_("SELECT specialization_id FROM worker_specialization WHERE worker_id=%d AND inviz_date IS NULL"%(employee_id))
while (query.next()):
if (int (query.value(0).toString()))==(self.add_spec_dialog.comboBox.currentIndex()+1):
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Worker has this specialization")
warning_message.show()
return None
self.spec_model.insertRow(row)
self.cdatetime = QtCore.QDate()
self.spec_model.setData (self.spec_model.index(row,1), QtCore.QVariant(self.cdatetime.currentDate()))
self.spec_model.setData (self.spec_model.index(row,2), QtCore.QVariant(self.spec_cr_table[self.add_spec_dialog.comboBox.currentIndex()]))
self.spec_model.setData (self.spec_model.index(row,3), QtCore.QVariant(employee_id))
self.spec_view.hideColumn(2)
def add_spec_sure_no_pressed (self):
print "Add_spec_sure_no button been pressed"
self.add_spec_dialog.hide()
#----------------------------------------------------------------------------------------------
def click_del_spec(self):
print "del_spec_button been pressed"
query = QtSql.QSqlQuery()
employee_id = get_employee_id(self.break_model.filter())
sel_m = self.spec_view.selectionModel()
selection = sel_m.selection()
if (self.spec_model.rowCount())==1:
warning_message = QtGui.QMessageBox(self.interview)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("You can't delete last spec")
warning_message.show()
return None
indexes = selection.indexes()
if len(indexes)!=1:
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Select ONE row to delete")
warning_message.show()
return None
self.del_spec_dialog = QtGui.QDialog(self.employee)
self.del_spec_dialog.setWindowTitle("Delete")
self.del_spec_dialog.resize(190, 100)
self.del_spec_dialog.setMinimumSize(QtCore.QSize(190, 100))
self.del_spec_dialog.setMaximumSize(QtCore.QSize(190, 100))
self.del_spec_dialog.gridLayout = QtGui.QGridLayout(self.del_spec_dialog)
self.del_spec_dialog.label = QtGui.QLabel(self.del_spec_dialog)
self.del_spec_dialog.label.setText("Delete specialization from")
self.del_spec_dialog.gridLayout.addWidget(self.del_spec_dialog.label, 0, 0, 1, 2)
self.del_spec_dialog.name_label = QtGui.QLabel(self.del_spec_dialog)
query.exec_("SELECT surname,name FROM worker WHERE id=%d"%(get_employee_id(self.spec_model.filter())))
query.next()
self.del_spec_dialog.name_label.setText(query.value(0).toString()+" "+query.value(1).toString())
self.del_spec_dialog.gridLayout.addWidget(self.del_spec_dialog.name_label, 1, 0, 1, 2)
self.del_spec_dialog.yes_button = QtGui.QPushButton(self.del_spec_dialog)
self.del_spec_dialog.yes_button.setText("Ok")
self.del_spec_dialog.gridLayout.addWidget(self.del_spec_dialog.yes_button, 2, 0, 1, 1)
self.del_spec_dialog.no_button = QtGui.QPushButton(self.del_spec_dialog)
self.del_spec_dialog.no_button.setText("Cancel")
self.del_spec_dialog.gridLayout.addWidget(self.del_spec_dialog.no_button, 2, 1, 1, 1)
QtCore.QObject.connect(self.del_spec_dialog.yes_button,QtCore.SIGNAL("clicked()"),self.del_spec_sure_yes_pressed)
QtCore.QObject.connect(self.del_spec_dialog.no_button, QtCore.SIGNAL("clicked()"),self.del_spec_sure_no_pressed)
QtCore.QMetaObject.connectSlotsByName(self.employee)
self.del_spec_dialog.exec_()
def del_spec_sure_yes_pressed(self):
print "del_spec_sure_yes button been pressed"
self.del_spec_dialog.hide()
sel_m = self.spec_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
row_num = indexes[0].row()
ix = self.spec_model.index(row_num,0)
if self.spec_model.data(ix).toString()=='':
self.spec_model.removeRow(row_num)
return None
spec_id = int (self.spec_model.data(ix).toString())
query = QtSql.QSqlQuery()
query.exec_("DELETE FROM worker_specialization WHERE id=%d"%(spec_id))
self.spec_model.select()
def del_spec_sure_no_pressed(self):
print "del_spec_sure_no button been pressed"
self.del_spec_dialog.hide()
#----------------------------------------------------------------------------------------------
def click_del_employee(self):
print "del_employee_button been pressed"
query = QtSql.QSqlQuery()
sel_m = self.employee_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
if len(indexes)!=1:
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Select ONE row to delete")
warning_message.show()
return None
row_num = indexes[0].row()
ix = self.employee_model.index(row_num,0)
employee_id = int (self.employee_model.data(ix).toString())
self.delete_employee_sure = QtGui.QDialog (self.employee)
self.delete_employee_sure.resize(190, 110)
self.delete_employee_sure.setMinimumSize(QtCore.QSize(190, 100))
self.delete_employee_sure.setMaximumSize(QtCore.QSize(190, 100))
self.delete_employee_sure.setWindowTitle("Delete")
self.delete_employee_sure.gridLayout = QtGui.QGridLayout(self.delete_employee_sure)
self.delete_employee_sure.name_label = QtGui.QLabel(self.delete_employee_sure)
query.exec_("SELECT surname, name FROM worker WHERE id=%d"%(employee_id))
query.next()
self.delete_employee_sure.name_label.setText(query.value(0).toString() + " "+query.value(1).toString())
self.delete_employee_sure.gridLayout.addWidget(self.delete_employee_sure.name_label, 0, 0, 1, 2)
self.delete_employee_sure.yes_button = QtGui.QPushButton(self.delete_employee_sure)
self.delete_employee_sure.yes_button.setText("Ok")
self.delete_employee_sure.gridLayout.addWidget(self.delete_employee_sure.yes_button, 3, 0, 1, 1)
self.delete_employee_sure.no_button = QtGui.QPushButton(self.delete_employee_sure)
self.delete_employee_sure.no_button.setText("Cancel")
self.delete_employee_sure.gridLayout.addWidget(self.delete_employee_sure.no_button, 3, 1, 1, 1)
self.delete_employee_sure.label = QtGui.QLabel(self.delete_employee_sure)
self.delete_employee_sure.label.setText("Are you sure?")
self.delete_employee_sure.gridLayout.addWidget(self.delete_employee_sure.label, 1, 0, 1, 1)
QtCore.QObject.connect(self.delete_employee_sure.yes_button,QtCore.SIGNAL("clicked()"),self.delete_employee_sure_yes_pressed)
QtCore.QObject.connect(self.delete_employee_sure.no_button, QtCore.SIGNAL("clicked()"),self.delete_employee_sure_no_pressed)
QtCore.QMetaObject.connectSlotsByName(self.interview)
self.delete_employee_sure.exec_()
#----------------------------------------------------------------------------------------------
def delete_employee_sure_yes_pressed (self):
print "Delete_employee_sure_yes button been pressed"
self.delete_employee_sure.hide()
sel_m = self.employee_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
row_num = indexes[0].row()
self.employee_model.removeRows(row_num, 1, QtCore.QModelIndex())
self.employee_model.submitAll()
self.click_refresh_employee()
def delete_employee_sure_no_pressed (self):
print "Delete_interview_sure_no button been pressed"
self.delete_employee_sure.hide()
#----------------------------------------------------------------------------------------------
def click_fire_employee(self):
print "fire_employee_button been pressed"
query = QtSql.QSqlQuery()
sel_m = self.employee_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
if len(indexes)!=1:
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Select ONE row to fire")
warning_message.show()
return None
row_num = indexes[0].row()
ix = self.employee_model.index(row_num,0)
employee_id = int (self.employee_model.data(ix).toString())
self.fire_employee_sure = QtGui.QDialog (self.employee)
self.fire_employee_sure.resize(190, 100)
self.fire_employee_sure.setMinimumSize(QtCore.QSize(190, 100))
self.fire_employee_sure.setMaximumSize(QtCore.QSize(190, 100))
self.fire_employee_sure.setWindowTitle("Fire")
self.fire_employee_sure.gridLayout = QtGui.QGridLayout(self.fire_employee_sure)
self.fire_employee_sure.name_label = QtGui.QLabel(self.fire_employee_sure)
query.exec_("SELECT surname, name FROM worker WHERE id=%d"%(employee_id))
query.next()
self.fire_employee_sure.name_label.setText(query.value(0).toString() + " "+query.value(1).toString())
self.fire_employee_sure.gridLayout.addWidget(self.fire_employee_sure.name_label, 0, 0, 1, 2)
self.fire_employee_sure.yes_button = QtGui.QPushButton(self.fire_employee_sure)
self.fire_employee_sure.yes_button.setText("Ok")
self.fire_employee_sure.gridLayout.addWidget(self.fire_employee_sure.yes_button, 3, 0, 1, 1)
self.fire_employee_sure.no_button = QtGui.QPushButton(self.fire_employee_sure)
self.fire_employee_sure.no_button.setText("Cancel")
self.fire_employee_sure.gridLayout.addWidget(self.fire_employee_sure.no_button, 3, 1, 1, 1)
self.fire_employee_sure.label = QtGui.QLabel(self.fire_employee_sure)
self.fire_employee_sure.label.setText("Are you sure?")
self.fire_employee_sure.gridLayout.addWidget(self.fire_employee_sure.label, 1, 0, 1, 1)
QtCore.QObject.connect(self.fire_employee_sure.yes_button,QtCore.SIGNAL("clicked()"),self.fire_employee_sure_yes_pressed)
QtCore.QObject.connect(self.fire_employee_sure.no_button, QtCore.SIGNAL("clicked()"),self.fire_employee_sure_no_pressed)
QtCore.QMetaObject.connectSlotsByName(self.interview)
self.fire_employee_sure.exec_()
#----------------------------------------------------------------------------------------------
def fire_employee_sure_yes_pressed (self):
print "reject_interview_sure_yes button been pressed"
self.fire_employee_sure.hide()
sel_m = self.employee_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
row_num = indexes[0].row()
ix = self.employee_model.index(row_num,0)
employee_id = int (self.employee_model.data(ix).toString())
query = QtSql.QSqlQuery()
query.exec_("UPDATE worker SET fired=now() WHERE id=%d"%(employee_id))
self.click_refresh_employee()
def fire_employee_sure_no_pressed (self):
print "reject_interview_sure_no button been pressed"
self.fire_employee_sure.hide()
#----------------------------------------------------------------------------------------------
def click_employee(self):
print "click on employee_view"
self.submit_break()
self.submit_spec()
sel_m = self.employee_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
row_num = indexes[0].row()
ix = self.employee_model.index(row_num,0)
employee_id = int (self.employee_model.data(ix).toString())
self.break_model.setFilter('worker_id=%d and inviz_date IS NULL'%(employee_id))
self.spec_model.setFilter('worker_id=%d and inviz_date IS NULL'%(employee_id))
self.spec_model.select()
self.break_model.select()
ix1=self.employee_model.index(row_num,1)
ix2=self.employee_model.index(row_num,2)
l_contain = "For "+ self.employee_model.data(ix1).toString()+" "+self.employee_model.data(ix2).toString()
self.spec_groupbox.setTitle("Specializations for "+l_contain)
self.break_groupbox.setTitle("Breaks for " +l_contain)
self.del_employee_button.setEnabled(True)
self.detail_employee_button.setEnabled(True)
query = QtSql.QSqlQuery()
query.exec_("SELECT fired FROM worker WHERE id=%d"%(employee_id))
query.next()
if query.value(0).toString()!='':
self.fire_employee_button.setEnabled(False)
self.add_break_button.setEnabled(False)
self.add_spec_button.setEnabled(False)
self.del_break_button.setEnabled(False)
self.del_spec_button.setEnabled(False)
return None
else:
self.fire_employee_button.setEnabled(True)
self.add_break_button.setEnabled(True)
self.add_spec_button.setEnabled(True)
self.del_break_button.setEnabled(True)
self.del_spec_button.setEnabled(True)
return None
#---------------------------------------------------------------------------------------------
def click_detail_employee (self):
print "Detail employee button been pressed"
sel_m = self.employee_view.selectionModel()
selection = sel_m.selection()
if selection.isEmpty():
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Select row to detail")
warning_message.show()
return None
indexes = selection.indexes()
row_num = indexes[0].row()
ix = self.employee_model.index(row_num,0)
employee_id = int (self.employee_model.data(ix).toString())
ix=self.employee_model.index(row_num,1)
ix2=self.employee_model.index(row_num,2)
self.detail_dialog = QtGui.QDialog(self.employee)
self.detail_dialog.resize(674, 451)
self.detail_dialog.setWindowTitle(self.employee_model.data(ix).toString()+" "+self.employee_model.data(ix2).toString()+" Detail")
self.detail_dialog.task_model=QtSql.QSqlRelationalTableModel()
self.detail_dialog.history_model=QtSql.QSqlRelationalTableModel()
init_task_model (self.detail_dialog.task_model)
self.detail_dialog.task_model.setFilter("worker_id=%d AND inviz_date IS NULL"%(employee_id))
init_history_model (self.detail_dialog.history_model)
self.detail_dialog.gridLayout_2 = QtGui.QGridLayout(self.detail_dialog)
self.detail_dialog.search_button = QtGui.QToolButton(self.detail_dialog)
self.detail_dialog.search_button.setText("Search")
self.detail_dialog.gridLayout_2.addWidget(self.detail_dialog.search_button, 0, 3, 1, 1)
self.detail_dialog.task_view = QtGui.QTableView(self.detail_dialog)
self.detail_dialog.task_view.setModel(self.detail_dialog.task_model)
self.detail_dialog.task_view.hideColumn(0)
self.detail_dialog.task_view.hideColumn(3)
self.detail_dialog.task_view.hideColumn(6)
self.detail_dialog.task_view.setSortingEnabled(True)
self.detail_dialog.task_view.setCornerButtonEnabled (False)
self.detail_dialog.gridLayout_2.addWidget(self.detail_dialog.task_view, 1, 0, 1, 4)
self.detail_dialog.groupBox = QtGui.QGroupBox(self.detail_dialog)
self.detail_dialog.groupBox.setTitle("Status history for task N")
self.detail_dialog.gridLayout = QtGui.QGridLayout(self.detail_dialog.groupBox)
self.detail_dialog.history_view = QtGui.QTableView(self.detail_dialog.groupBox)
self.detail_dialog.history_view.setModel(self.detail_dialog.history_model)
self.detail_dialog.history_view.hideColumn(0)
self.detail_dialog.history_view.hideColumn(2)
self.detail_dialog.history_view.setSortingEnabled(True)
self.detail_dialog.history_view.setCornerButtonEnabled (False)
self.detail_dialog.gridLayout.addWidget(self.detail_dialog.history_view, 0, 0, 1, 1)
self.detail_dialog.gridLayout_2.addWidget(self.detail_dialog.groupBox, 2, 0, 3, 3)
self.detail_dialog.yes_button = QtGui.QToolButton(self.detail_dialog)
self.detail_dialog.yes_button.setText(" Ok ")
self.detail_dialog.gridLayout_2.addWidget(self.detail_dialog.yes_button,2,3,1,1)
self.detail_dialog.change_button = QtGui.QToolButton(self.detail_dialog)
self.detail_dialog.change_button.setText("Change status")
self.detail_dialog.gridLayout_2.addWidget(self.detail_dialog.change_button,3,3,1,1)
self.detail_dialog.refresh_button = QtGui.QToolButton(self.detail_dialog)
self.detail_dialog.refresh_button.setText("Refresh")
self.detail_dialog.gridLayout_2.addWidget(self.detail_dialog.refresh_button, 0, 0, 1, 1)
self.detail_dialog.change_button.setEnabled(False)
QtCore.QObject.connect(self.detail_dialog.refresh_button, QtCore.SIGNAL("clicked()"),self.refresh_detail_dialog_pressed)
QtCore.QObject.connect(self.detail_dialog.search_button,QtCore.SIGNAL("clicked()"),self.global_search_pressed)
QtCore.QObject.connect(self.detail_dialog.yes_button, QtCore.SIGNAL("clicked()"),self.yes_detail_dialog_pressed)
QtCore.QObject.connect(self.detail_dialog.change_button, QtCore.SIGNAL("clicked()"),self.change_dialog_pressed)
QtCore.QObject.connect(self.detail_dialog.task_view, QtCore.SIGNAL("clicked(QModelIndex)"),self.click_task)
QtCore.QMetaObject.connectSlotsByName(self.detail_dialog)
self.refresh_detail_dialog_pressed()
if self.detail_dialog.task_model.rowCount()==1:
ix=self.detail_dialog.task_model.index(0,0)
task_id=int(self.detail_dialog.task_model.data(ix).toString())
self.detail_dialog.history_model.setFilter('task_id=%d'%(task_id))
self.detail_dialog.history_model.select()
self.detail_dialog.history_view.sortByColumn(2)
self.detail_dialog.groupBox.setTitle("Status history for task N1")
self.detail_dialog.exec_()
#----------------------------------------------------------------------------------------------
#---------------Detail employee methods--------------------------------------------------------
#----------------------------------------------------------------------------------------------
def change_dialog_pressed (self):
print "Change detail dialog button been pressed"
self.change_dialog = QtGui.QDialog(self.detail_dialog)
self.change_dialog.setWindowTitle("Change status")
self.change_dialog.resize(200, 120)
self.change_dialog.setMinimumSize(QtCore.QSize(200, 120))
self.change_dialog.setMaximumSize(QtCore.QSize(200, 120))
self.change_dialog.gridLayout = QtGui.QGridLayout(self.change_dialog)
self.change_dialog.label = QtGui.QLabel(self.change_dialog)
self.change_dialog.label.setText("Change task N%d status as"%(get_task_n(self.detail_dialog.groupBox.title())))
self.change_dialog.gridLayout.addWidget(self.change_dialog.label, 0, 0, 1, 1)
self.change_dialog.comboBox = QtGui.QComboBox(self.change_dialog)
query = QtSql.QSqlQuery()
query.exec_("SELECT id, name FROM t_status ORDER BY id")
i=0
self.change_status_cr_table=[]
while (query.next()):
self.change_dialog.comboBox.insertItem(i,query.value(1).toString(),QtCore.QVariant(i))
self.change_status_cr_table[i:]=[int(query.value(0).toString())]
i+=1
self.change_dialog.gridLayout.addWidget(self.change_dialog.comboBox, 1, 0, 1, 2)
self.change_dialog.yes_button = QtGui.QPushButton(self.change_dialog)
self.change_dialog.yes_button.setText("Ok")
self.change_dialog.gridLayout.addWidget(self.change_dialog.yes_button, 2, 0, 1, 1)
self.change_dialog.no_button = QtGui.QPushButton(self.change_dialog)
self.change_dialog.no_button.setText("Cancel")
self.change_dialog.gridLayout.addWidget(self.change_dialog.no_button, 2, 1, 1, 1)
QtCore.QObject.connect(self.change_dialog.yes_button, QtCore.SIGNAL("clicked()"),self.yes_change_dialog_pressed)
QtCore.QObject.connect(self.change_dialog.no_button, QtCore.SIGNAL("clicked()"),self.yes_change_dialog_pressed)
QtCore.QMetaObject.connectSlotsByName(self.detail_dialog)
self.change_dialog.exec_()
def yes_change_dialog_pressed (self):
print "Yes change button dialog been pressed"
self.change_dialog.hide()
query = QtSql.QSqlQuery()
query.exec_("SELECT status_id FROM task WHERE id=%d"%(get_task_id(self.detail_dialog.history_model.filter())))
query.next()
if int(query.value(0).toString())==(self.change_status_cr_table[self.change_dialog.comboBox.currentIndex()]):
warning_message = QtGui.QMessageBox(self.employee)
warning_message.setWindowTitle("Notice")
warning_message.setInformativeText("Status which you put is following")
warning_message.show()
return None
query.exec_("UPDATE task SET status_id=%d WHERE id=%d"%(self.change_status_cr_table[self.change_dialog.comboBox.currentIndex()],get_task_id(self.detail_dialog.history_model.filter())))
print self.change_dialog.comboBox.currentIndex()+1,get_task_id(self.detail_dialog.history_model.filter())
self.refresh_detail_dialog_pressed()
def no_change_dialog_pressed (self):
print "No change button dialog been pressed"
self.change_dialog.hide()
#----------------------------------------------------------------------------------------------
def refresh_detail_dialog_pressed (self):
print "refresh detail dialog button been pressed"
self.detail_dialog.task_model.select()
self.detail_dialog.history_model.select()
self.detail_dialog.change_button.setEnabled(False)
#----------------------------------------------------------------------------------------------
def yes_detail_dialog_pressed (self):
print "yes detail dialog button been pressed"
self.detail_dialog.hide()
#----------------------------------------------------------------------------------------------
def click_task (self):
print "Click task view"
sel_m = self.detail_dialog.task_view.selectionModel()
selection = sel_m.selection()
indexes = selection.indexes()
row_num = indexes[0].row()
ix = self.detail_dialog.task_model.index(row_num,0)
task_id = int (self.detail_dialog.task_model.data(ix).toString())
self.detail_dialog.history_model.setFilter('task_id=%d'%(task_id))
self.detail_dialog.history_model.select()
self.detail_dialog.history_view.sortByColumn(2)
self.detail_dialog.groupBox.setTitle("Status history for task N%d"%(row_num+1))
self.detail_dialog.change_button.setEnabled(True)
#----------------------------------------------------------------------------------------------
def global_search_pressed (self):
print "Global search button been pressed"
#----------------------------------------------------------------------------------------------
def init_interview_model (model):
model.setTable("interview_full")
model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
fields = ['id', 'Surname', 'Name', 'Patronym', 'Date', 'address_id', 'Country', 'City', 'Address1',
'Address2', 'Phone', 'Zip', 'Comment', 'Status']
for i,field in enumerate(fields):
model.setHeaderData(i, QtCore.Qt.Horizontal,QtCore.QVariant(QtCore.QObject.tr(model, field)))
#----------------------------------------------------------------------------------------------
def init_employee_model (model):
model.setTable("worker_full")
model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
fields = ['id', 'Surname', 'Name', 'Patronym', 'address_id', 'Country', 'City', 'Address1',
'Address2', 'Phone', 'Zip', 'Hired', 'Fired', 'Comment']
for i,field in enumerate(fields):
model.setHeaderData(i, QtCore.Qt.Horizontal,QtCore.QVariant(QtCore.QObject.tr(model, field)))
#----------------------------------------------------------------------------------------------
def init_break_model (model):
model.setTable("dayoff")
model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
model.setRelation(3, QtSql.QSqlRelation("dayoff_type", "id", "name"))
model.setFilter("worker_id=0")
fields = ['id', 'Start', 'Finish', 'Type', 'worker_id', 'Comment', 'inviz_date']
for i,field in enumerate(fields):
model.setHeaderData(i, QtCore.Qt.Horizontal,QtCore.QVariant(QtCore.QObject.tr(model, field)))
#----------------------------------------------------------------------------------------------
def init_spec_model (model):
model.setTable("worker_specialization")
model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
model.setRelation(2, QtSql.QSqlRelation("specialization", "id", "name"))
model.setFilter("worker_id=0")
fields = ['id', 'Start', 'Specialization', 'worker_id', 'Comment','inviz_date']
for i,field in enumerate(fields):
model.setHeaderData(i, QtCore.Qt.Horizontal,QtCore.QVariant(QtCore.QObject.tr(model, field)))
#----------------------------------------------------------------------------------------------
def init_task_model (model):
model.setTable('task')
model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
model.setRelation(4, QtSql.QSqlRelation("client", "id", "name"))
model.setRelation(5, QtSql.QSqlRelation("article","id", "name"))
model.setRelation(8, QtSql.QSqlRelation("t_status","id", "name"))
fields = ['id', 'Date accepted', 'Est date', 'worker_id', 'Client', 'Article', 'inviz_date', 'Comment', 'Status']
for i,field in enumerate(fields):
model.setHeaderData(i, QtCore.Qt.Horizontal,QtCore.QVariant(QtCore.QObject.tr(model, field)))
#----------------------------------------------------------------------------------------------
def init_history_model (model):
model.setTable('task_status')
model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
model.setRelation(3, QtSql.QSqlRelation("t_status", "id", "name"))
model.setFilter("task_id=0")
fields = ['id', 'Start', 'task_id', 'Status']
for i,field in enumerate(fields):
model.setHeaderData(i, QtCore.Qt.Horizontal,QtCore.QVariant(QtCore.QObject.tr(model, field)))
#----------------------------------------------------------------------------------------------
def isDigit(char):
if char=='1' or char=='2' or char=='3' or char=='4' or char=='5' or char=='6' or char=='7' or char=='8' or char=='9' or char=='0':
return True
else:
return False
def get_employee_id (flt):
i=int(10)
temp = int(0)
while (isDigit(flt[i:i+1])):
temp*=10
temp = temp+int(flt[i:i+1])
i+=1
return temp
def get_task_id (flt):
i=int(8)
temp = int(0)
while (isDigit(flt[i:i+1])):
temp*=10
temp = temp+int(flt[i:i+1])
i+=1
return temp
def get_task_n (flt):
i=int(25)
temp = int(0)
while (isDigit(flt[i:i+1])):
temp*=10
temp = temp+int(flt[i:i+1])
i+=1
return temp
#----------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------
def createConnection():
db = QtSql.QSqlDatabase.addDatabase("QPSQL")
db.setHostName("localhost")
db.setDatabaseName("baza")
db.setUserName("postgres")
db.setPassword("ch5n1s534")
if not db.open():
QtGui.QMessageBox.critical(0, QtGui.qApp.tr("Cannot open database"), QtGui.qApp.tr("Unable"), QtGui.QMessageBox.Cancel, QtGui.QMessageBox.NoButton)
return False
return True
if __name__=="__main__":
app = QtGui.QApplication(sys.argv)
if not createConnection():
sysexit(1)
app.setStyle('Cleanlooks')
main_w = QtGui.QMainWindow()
my_form = MainProgram()
my_form.draw_menu(main_w)
main_w.show()
app.exec_()