Диссертация (1167217), страница 75
Текст из файла (страница 75)
"'><input type='hidden'name='setname' value='" . $setname . "'>";echo "<input type='submit' class='custombutton'value='НАЗАД'></form></td>";echo "</tr></table>";$query = "SELECT * FROM words WHERE refsetid=$setid ORDER BY Rand()";$result = $conn->query($query);if (!$result) die($conn->error);elseif ($result->num_rows == 0) {echo "<h3 class='center'>Набор \"" . $setname .
"\" (0)</h3>";}elseif ($result->num_rows > 0) {echo "<h3 class='center'>Набор \"" . $setname . "\" (" .$result->num_rows . ")</h3>";//shuffle($my_array);$sarr = getCards2($cards2);$s1arr = $sarr[0];$s2arr = $sarr[1];echo "<table class='cards1'>";$counter = 0;$side1 = $side2 = "";foreach ($result as $row) {$counter++;foreach ($s1arr as $s1) {$side1 .= $row[$s1] . "<br>";}foreach ($s2arr as $s2) {$side2 .= $row[$s2] .
"<br>";}$aster = '';for ($i=0; $i<$row['levels']; $i++) {$aster .= '*';}echo "<tr><td class='clickable'>" . $side2 . "</td><tdclass='whitetext'>" . $side1 . "</td><td style='border: none;'><span id='" .$row['wordid'] . "'>" .
$aster . "</span><br><button onclick='aster(" .$row['wordid'] . ", 1)'>*</button><button onclick='aster(" . $row['wordid'] . ",2)'>* *</button><button onclick='aster(" . $row['wordid'] . ", 3)'>* **</button></td></tr>";$side1 = $side2 = "";$hiddenButtons .= "";467}echo "</table>";}$result->close();$conn->close();} // if (isset($_POST['setid']))else {echo <<<_END<script>window.location.href ="http://agoroz.bget.ru/mysets.php";</script>_END;}} // if ($_SESSION['login_user'])// Что выводить для НЕзарегистрированного пользователя////////////////////////////////////////////////else {echo <<<_END<script>window.location.href ="http://agoroz.bget.ru/login.php";</script>_END;}?></div><a href="#0" class="cd-top">Top</a><a id="markB"></a> <!-- site footer --></body></html>468Приложение 8. Листинг автоматизированного модуля управлениядистанционным обучениемМодуль может рассматриваться как стабильная β-версия.Файл интерфейсаfrom PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(1933, 1385)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)self.gridLayout.setObjectName("gridLayout")self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)self.tabWidget.setObjectName("tabWidget")self.tab = QtWidgets.QWidget()self.tab.setObjectName("tab")self.gridLayout_2 = QtWidgets.QGridLayout(self.tab)self.gridLayout_2.setContentsMargins(0, 0, 0, 0)self.gridLayout_2.setObjectName("gridLayout_2")self.widget = QtWidgets.QWidget(self.tab)self.widget.setObjectName("widget")self.gridLayout_8 = QtWidgets.QGridLayout(self.widget)self.gridLayout_8.setContentsMargins(0, 0, 0, 0)self.gridLayout_8.setObjectName("gridLayout_8")self.pushButton_2 = QtWidgets.QPushButton(self.widget)self.pushButton_2.setObjectName("pushButton_2")self.gridLayout_8.addWidget(self.pushButton_2, 0, 0, 1, 1)self.comboBox = QtWidgets.QComboBox(self.widget)self.comboBox.setObjectName("comboBox")self.comboBox.addItem("")self.gridLayout_8.addWidget(self.comboBox, 1, 0, 1, 1)self.gridLayout_2.addWidget(self.widget, 0, 0, 1, 1)self.tabWidget.addTab(self.tab, "")self.tab_2 = QtWidgets.QWidget()self.tab_2.setObjectName("tab_2")self.gridLayout_3 = QtWidgets.QGridLayout(self.tab_2)self.gridLayout_3.setContentsMargins(0, 0, 0, 0)self.gridLayout_3.setObjectName("gridLayout_3")self.widget_2 = QtWidgets.QWidget(self.tab_2)self.widget_2.setObjectName("widget_2")self.gridLayout_9 = QtWidgets.QGridLayout(self.widget_2)self.gridLayout_9.setContentsMargins(0, 0, 0, 0)self.gridLayout_9.setObjectName("gridLayout_9")self.pushButton_3 = QtWidgets.QPushButton(self.widget_2)self.pushButton_3.setObjectName("pushButton_3")self.gridLayout_9.addWidget(self.pushButton_3, 0, 0, 1, 1)self.comboBox_2 = QtWidgets.QComboBox(self.widget_2)self.comboBox_2.setObjectName("comboBox_2")self.comboBox_2.addItem("")469self.gridLayout_9.addWidget(self.comboBox_2, 1, 0, 1, 1)self.gridLayout_3.addWidget(self.widget_2, 0, 0, 1, 1)self.tabWidget.addTab(self.tab_2, "")self.tab_3 = QtWidgets.QWidget()self.tab_3.setObjectName("tab_3")self.gridLayout_4 = QtWidgets.QGridLayout(self.tab_3)self.gridLayout_4.setContentsMargins(0, 0, 0, 0)self.gridLayout_4.setObjectName("gridLayout_4")self.widget_3 = QtWidgets.QWidget(self.tab_3)self.widget_3.setObjectName("widget_3")self.gridLayout_10 = QtWidgets.QGridLayout(self.widget_3)self.gridLayout_10.setContentsMargins(0, 0, 0, 0)self.gridLayout_10.setObjectName("gridLayout_10")self.pushButton_4 = QtWidgets.QPushButton(self.widget_3)self.pushButton_4.setObjectName("pushButton_4")self.gridLayout_10.addWidget(self.pushButton_4, 0, 0, 1, 1)self.comboBox_3 = QtWidgets.QComboBox(self.widget_3)self.comboBox_3.setObjectName("comboBox_3")self.comboBox_3.addItem("")self.gridLayout_10.addWidget(self.comboBox_3, 1, 0, 1, 1)self.gridLayout_4.addWidget(self.widget_3, 0, 0, 1, 1)self.tabWidget.addTab(self.tab_3, "")self.tab_7 = QtWidgets.QWidget()self.tab_7.setObjectName("tab_7")self.gridLayout_11 = QtWidgets.QGridLayout(self.tab_7)self.gridLayout_11.setContentsMargins(0, 0, 0, 0)self.gridLayout_11.setObjectName("gridLayout_11")self.widget_5 = QtWidgets.QWidget(self.tab_7)self.widget_5.setObjectName("widget_5")self.gridLayout_12 = QtWidgets.QGridLayout(self.widget_5)self.gridLayout_12.setContentsMargins(0, 0, 0, 0)self.gridLayout_12.setObjectName("gridLayout_12")self.pushButton_5 = QtWidgets.QPushButton(self.widget_5)self.pushButton_5.setObjectName("pushButton_5")self.gridLayout_12.addWidget(self.pushButton_5, 0, 0, 1, 1)self.comboBox_5 = QtWidgets.QComboBox(self.widget_5)self.comboBox_5.setObjectName("comboBox_5")self.comboBox_5.addItem("")self.gridLayout_12.addWidget(self.comboBox_5, 1, 0, 1, 1)self.gridLayout_11.addWidget(self.widget_5, 0, 0, 1, 1)self.tabWidget.addTab(self.tab_7, "")self.tab_4 = QtWidgets.QWidget()self.tab_4.setObjectName("tab_4")self.gridLayout_5 = QtWidgets.QGridLayout(self.tab_4)self.gridLayout_5.setContentsMargins(0, 0, 0, 0)self.gridLayout_5.setObjectName("gridLayout_5")self.widget_4 = QtWidgets.QWidget(self.tab_4)self.widget_4.setObjectName("widget_4")self.gridLayout_6 = QtWidgets.QGridLayout(self.widget_4)self.gridLayout_6.setContentsMargins(0, 0, 0, 0)self.gridLayout_6.setObjectName("gridLayout_6")self.pushButton = QtWidgets.QPushButton(self.widget_4)self.pushButton.setAutoFillBackground(False)self.pushButton.setObjectName("pushButton")self.gridLayout_6.addWidget(self.pushButton, 0, 0, 1, 1)470self.comboBox_4 = QtWidgets.QComboBox(self.widget_4)self.comboBox_4.setObjectName("comboBox_4")self.comboBox_4.addItem("")self.gridLayout_6.addWidget(self.comboBox_4, 1, 0, 1, 1)self.gridLayout_5.addWidget(self.widget_4, 0, 0, 1, 1)self.tabWidget.addTab(self.tab_4, "")self.tab_5 = QtWidgets.QWidget()self.tab_5.setObjectName("tab_5")self.gridLayout_7 = QtWidgets.QGridLayout(self.tab_5)self.gridLayout_7.setContentsMargins(0, 0, 0, 0)self.gridLayout_7.setObjectName("gridLayout_7")self.tabWidget.addTab(self.tab_5, "")self.tab_6 = QtWidgets.QWidget()self.tab_6.setObjectName("tab_6")self.tabWidget.addTab(self.tab_6, "")self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 1933, 47))self.menubar.setObjectName("menubar")self.menuFile = QtWidgets.QMenu(self.menubar)self.menuFile.setObjectName("menuFile")self.menuCourses = QtWidgets.QMenu(self.menubar)self.menuCourses.setObjectName("menuCourses")self.menuStudents = QtWidgets.QMenu(self.menubar)self.menuStudents.setObjectName("menuStudents")self.menuTutors = QtWidgets.QMenu(self.menubar)self.menuTutors.setObjectName("menuTutors")self.menuCST = QtWidgets.QMenu(self.menubar)self.menuCST.setObjectName("menuCST")self.menuFinancial = QtWidgets.QMenu(self.menubar)self.menuFinancial.setObjectName("menuFinancial")self.menuHelp = QtWidgets.QMenu(self.menubar)self.menuHelp.setObjectName("menuHelp")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.actionGR = QtWidgets.QAction(MainWindow)self.actionGR.setObjectName("actionGR")self.actionMonth_Payments = QtWidgets.QAction(MainWindow)self.actionMonth_Payments.setObjectName("actionMonth_Payments")self.actionShow_Not_Active_Agr = QtWidgets.QAction(MainWindow)self.actionShow_Not_Active_Agr.setObjectName("actionShow_Not_Active_Agr")self.actionShow_Active_Agr = QtWidgets.QAction(MainWindow)self.actionShow_Active_Agr.setObjectName("actionShow_Active_Agr")self.actionAssignments_graded = QtWidgets.QAction(MainWindow)self.actionAssignments_graded.setObjectName("actionAssignments_graded")self.actionActive_Tutors = QtWidgets.QAction(MainWindow)self.actionActive_Tutors.setObjectName("actionActive_Tutors")self.menuTutors.addAction(self.actionActive_Tutors)self.menuTutors.addAction(self.actionAssignments_graded)self.menuCST.addAction(self.actionShow_Active_Agr)471self.menuCST.addAction(self.actionShow_Not_Active_Agr)self.menuFinancial.addAction(self.actionGR)self.menuFinancial.addAction(self.actionMonth_Payments)self.menubar.addAction(self.menuFile.menuAction())self.menubar.addAction(self.menuCourses.menuAction())self.menubar.addAction(self.menuStudents.menuAction())self.menubar.addAction(self.menuTutors.menuAction())self.menubar.addAction(self.menuCST.menuAction())self.menubar.addAction(self.menuFinancial.menuAction())self.menubar.addAction(self.menuHelp.menuAction())self.retranslateUi(MainWindow)self.tabWidget.setCurrentIndex(0)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "CDO Manager"))self.pushButton_2.setText(_translate("MainWindow", "Add Record"))self.comboBox.setItemText(0, _translate("MainWindow", "Modify Record..."))self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab),_translate("MainWindow", "Courses"))self.pushButton_3.setText(_translate("MainWindow", "Add Record"))self.comboBox_2.setItemText(0, _translate("MainWindow", "ModifyRecord ..."))self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2),_translate("MainWindow", "Students"))self.pushButton_4.setText(_translate("MainWindow", "Add Record"))self.comboBox_3.setItemText(0, _translate("MainWindow", "ModifyRecord ..."))self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3),_translate("MainWindow", "Tutors"))self.pushButton_5.setText(_translate("MainWindow", "Add Record"))self.comboBox_5.setItemText(0, _translate("MainWindow", "ModifyRecord..."))self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_7),_translate("MainWindow", "Authorized"))self.pushButton.setText(_translate("MainWindow", "Add Record"))self.comboBox_4.setItemText(0, _translate("MainWindow", "ModifyRecord ..."))self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4),_translate("MainWindow", "CST"))self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_5),_translate("MainWindow", "CST Tables"))self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_6),_translate("MainWindow", "Reports"))self.menuFile.setTitle(_translate("MainWindow", "File"))self.menuCourses.setTitle(_translate("MainWindow", "Courses"))self.menuStudents.setTitle(_translate("MainWindow", "Students"))self.menuTutors.setTitle(_translate("MainWindow", "Tutors"))self.menuCST.setTitle(_translate("MainWindow", "CST"))self.menuFinancial.setTitle(_translate("MainWindow", "Financial"))self.menuHelp.setTitle(_translate("MainWindow", "Help"))self.actionGR.setText(_translate("MainWindow", "General Report"))472self.actionMonth_Payments.setText(_translate("MainWindow", "Month\'sPayments"))self.actionShow_Not_Active_Agr.setText(_translate("MainWindow","Show Not Active Agr"))self.actionShow_Active_Agr.setText(_translate("MainWindow", "ShowActive Agr"))self.actionAssignments_graded.setText(_translate("MainWindow","Assignments graded"))self.actionActive_Tutors.setText(_translate("MainWindow", "ActiveTutors"))Файл исполняющей программыimport sysimport osimport csvimport randomimport collectionsfrom datetime import *import timeimport sqlite3from maingui import *from PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.QtCore import QDatefrom PyQt5.QtWidgets import QTableWidget, QTableWidgetItem, QTabWidget,QLabel,\QPushButton, QWidget, QScrollArea, QVBoxLayout, QHBoxLayout,QGridLayout,\QComboBox, QDialog, QLayout, QLineEdit, QDoubleSpinBox, QSpinBox,QDateEditfrom macpath import join, splitfrom PyQt5.Qt import QCheckBox, QTabBar, QMessageBox, QTextEdit,\QDialogButtonBoxfrom _overlapped import NULLfrom cProfile import labelfrom PyQt5.QtGui import QTextFramefrom idlelib.IOBinding import encodingfrom os.path import isfileclass MyWin(QtWidgets.QMainWindow):def __init__(self, parent=None):QtWidgets.QWidget.__init__(self, parent)self.ui = Ui_MainWindow()self.ui.setupUi(self)#booleansself.isSetText = False# switchers for empty tables, the very start of the programself.noCourses = Trueself.noTutors = Trueself.noStudents = Trueself.noAuth = Trueself.noCST = True# switcher active/not active agreements in CSTself.activeInCST = True473self.flagsEdit = QtCore.Qt.ItemFlags()self.flagsEdit != QtCore.Qt.ItemIsEditableself.monthsName = ['Jan', 'Feb', 'March', 'Apr', 'May', 'June','July', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']self.languages = ['Английский', 'Немецкий', 'Французский','Испанский', 'Персидский', '-Другое-']self.languages.sort()self.dialogMax = [2700, 1800]self.dialogMin = [1500, 1000]self.ui.actionGR.triggered.connect(self.financialGROut)self.ui.actionMonth_Payments.triggered.connect(self.monthPayment)self.ui.actionShow_Active_Agr.triggered.connect(self.showTableCSTTables)self.ui.actionShow_Not_Active_Agr.triggered.connect(self.showTableCSTTablesNotActive)self.ui.actionAssignments_graded.triggered.connect(self.getTutorsAssignReport)self.ui.actionActive_Tutors.triggered.connect(self.getActiveTutors)self.showTableCourses()self.showTableTutors()self.showTableAuthorized()self.showTableStudents()self.showTableCourseForTutors()self.showTableCSTTables()self.ui.pushButton_2.clicked.connect(self.addCourse)self.ui.pushButton_3.clicked.connect(self.addStudent)self.ui.pushButton_4.clicked.connect(self.addTutor)self.ui.pushButton_5.clicked.connect(self.addAuth)self.ui.pushButton.clicked.connect(self.addCST)def getActiveTutors(self):conn = sqlite3.connect('cdo.db')tutors = self.getLstSQL(conn.execute("SELECT * FROM tutor"))txt = ""for tutor in tutors:rows = self.getLstSQL(conn.execute("SELECT * FROMcoursesfortutor WHERE active=1 AND tutor=%d" % tutor[0]))txt += ' '.join(tutor[1:4]) + ' - ' + str(len(rows)) + '\n'for row in rows:student = self.getStrSQL(conn.execute("SELECT famname FROMstudent WHERE id=%d" % row[4]))course = self.getStrSQL(conn.execute("SELECT courseshortFROM course WHERE id=%d" % row[2]))txt += '\t' + row[6] + ' ' + student + ' ' + course + '\n' #agreement, student, courseconn.close()f = open('active_tutotrs.txt', 'w', encoding='utf-8')f.write(txt)f.close()474self.ui.statusbar.showMessage("Report has been saved to file.",2000)def getTutorsAssignReport(self):data = []self.d = QDialog()self.d.setWindowModality(QtCore.Qt.ApplicationModal)self.d.setMaximumSize(self.dialogMax[0], self.dialogMax[1])self.d.setMinimumSize(self.dialogMin[0], self.dialogMin[1])self.d.resize(self.dialogMin[0], self.dialogMin[1])scroll = QScrollArea(self.d)scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)viewport = QWidget(self.d)scroll.setWidget(viewport)scroll.setWidgetResizable(True)l = QVBoxLayout(viewport)viewport.setLayout(l)buttons = QDialogButtonBox(QDialogButtonBox.Ok |QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self.d)buttons.accepted.connect(self.d.accept)buttons.rejected.connect(self.d.reject)# add widgetslabel1 = QLabel("From", self.d)l.addWidget(label1)widLab1 = QDateEdit(self.d)widLab1.setDisplayFormat('yyyy-MM-dd')widLab1.setDate(date.today())widLab1.setCalendarPopup(True)l.addWidget(widLab1)label2 = QLabel("To", self.d)l.addWidget(label2)widLab2 = QDateEdit(self.d)widLab2.setDisplayFormat('yyyy-MM-dd')widLab2.setDate(date.today())widLab2.setCalendarPopup(True)l.addWidget(widLab2)l.addWidget(buttons)dialog_layout = QVBoxLayout(self.d)dialog_layout.addWidget(scroll)self.d.setLayout(dialog_layout)self.d.layout().addWidget(scroll)if self.d.exec_() == QDialog.Accepted:date1 = widLab2.date().toString("yyyy-MMdd")#str(datetime.now()).split()[0]date2 = widLab1.date().toString("yyyy-MM-dd")#'2017-07-24'counter = 0475options = QtWidgets.QFileDialog.Options()self.fileName, _ = QtWidgets.QFileDialog.getOpenFileName(self,"Open File", "", "CSV Files (*.csv)", options=options)# if csv file has been selectedif self.fileName:files = os.listdir('videocons')#print(files)with open(self.fileName, 'r', encoding='utf-8') as csvfile:f = csv.reader(csvfile, delimiter=',', quotechar='"')# read csv file line by linefor row in f:for cell in row:if 'has been graded' in cell:counter += 1row[0] = self.dateToSQLDate(row[0])currentDate = time.strptime(row[0].split(',')[0], '%Y-%m-%d')date1format = time.strptime(date1, '%Y-%m%d')date2format = time.strptime(date2, '%Y-%m%d')if currentDate >= date2format andcurrentDate <= date1format:# data has only lines with the properdatedata.append(row[0:4])# define unique tutors from csv filetutors = []for row in data:if row[1] not in tutors:tutors.append(row[1])txt = date2 + ' - ' + date1 + '\n'# list tutors one by onefor t in tutors:txt += t + ':\n'assign = []for row in data:# if there is the current tutorif row[1] == t:# exclude repeatsif row[2]+row[3] not in assign:# list datatxt += '\t' + row[0] + ', ' + row[2] +', ' + row[3] + '\n'assign.append(row[2]+row[3])txt += '\t------------\n'# here comes the consultations block...allCons = 0for file in files:tutorName = file.split('_')[-2].split()tutorName = ' '.join([tutorName[1],tutorName[2], tutorName[0]])if tutorName == t:476data2 = []# open file for the tutorf = open('videocons/' + file, 'r',encoding='utf-8')lines = f.readlines()f.close()counter = 0for line in lines:if (counter > 0) and (len(line) > 5):currentDate2 =time.strptime(line.split(':')[1], '%Y-%m-%d')if currentDate2 >= date2format andcurrentDate2 <= date1format:if '\n' in line:data2.append('\t\t' + line)else:data2.append('\t\t' + line +'\n')counter += 1if len(data2) > 0:txt += '\t' + file.split('_')[0] + " - "+ file.split('_')[1] + '\n'txt += ''.join(data2)allCons += len(data2)txt += 'Assignments: ' + str(len(assign)) + '\n'txt += 'Consultations: %d' % allCons + '\n'*2txt += '------------------------------\n'*2##############date1format = time.strptime(date1, '%Y-%m-%d')date2format = time.strptime(date2, '%Y-%m-%d')# find unique tutors, who not in csv filenotCVSTutors = []for file in files:tutorName = file.split('_')[-2].split()tutorName = ' '.join([tutorName[1], tutorName[2],tutorName[0]])if tutorName not in tutors and tutorName not innotCVSTutors:notCVSTutors.append(tutorName)#print(notCVSTutors)for t in notCVSTutors:allCons = 0txt2 = ''for file in files:tutorName = file.split('_')[-2].split()tutorName = ' '.join([tutorName[1],tutorName[2], tutorName[0]])if tutorName == t:data2 = []# open file for the tutorf = open('videocons/' + file, 'r',encoding='utf-8')lines = f.readlines()477f.close()counter = 0for line in lines:if (counter > 0) and (len(line) > 5):currentDate2 =time.strptime(line.split(':')[1], '%Y-%m-%d')if currentDate2 >= date2format andcurrentDate2 <= date1format:if '\n' in line:data2.append('\t\t' + line)else:data2.append('\t\t' + line +'\n')counter += 1if len(data2) > 0:txt2 += '\t' + file.split('_')[0] + " " + file.split('_')[1] + '\n'txt2 += ''.join(data2)allCons += len(data2)if allCons > 0:txt += '\n' + t + ':\n'txt += txt2txt += 'Consultations: %d' % allCons + '\n'*2##############f = open('report%s.txt' % str(time.time()), 'w',encoding='utf-8')f.write(txt)f.close()self.ui.statusbar.showMessage("Report has been saved tofile.", 2000)else:self.ui.statusbar.showMessage("No file selected.", 2000)def dateToSQLDate(self, date):dateAndTime = date.split(', ')lst = dateAndTime[0].split('/')lst[2] = '20' + lst[2]if len(lst[0]) == 1:lst[0] = '0' + lst[0]SQLDate = '-'.join(lst[::-1]) + ', ' + dateAndTime[1]return SQLDatedef addCourse(self):self.d = QDialog()self.d.setWindowModality(QtCore.Qt.ApplicationModal)self.d.setMaximumSize(self.dialogMax[0], self.dialogMax[1])self.d.setMinimumSize(self.dialogMin[0], self.dialogMin[1])self.d.resize(self.dialogMin[0], self.dialogMin[1])scroll = QScrollArea(self.d)scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)viewport = QWidget(self.d)478scroll.setWidget(viewport)scroll.setWidgetResizable(True)l = QVBoxLayout(viewport)viewport.setLayout(l)buttons = QDialogButtonBox(QDialogButtonBox.Ok |QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self.d)buttons.accepted.connect(self.d.accept)buttons.rejected.connect(self.d.reject)# add widgetsconn = sqlite3.connect('cdo.db')headerLst = self.getLstSQL(conn.execute("PRAGMAtable_info(course)"))label1 = QLabel(headerLst[1][1], self.d)l.addWidget(label1)widLab1 = QLineEdit(self.d)l.addWidget(widLab1)label2 = QLabel(headerLst[2][1], self.d)l.addWidget(label2)widLab2 = QDoubleSpinBox(self.d)widLab2.setMaximum(1000.0)l.addWidget(widLab2)label3 = QLabel(headerLst[3][1], self.d)l.addWidget(label3)widLab3 = QSpinBox(self.d)widLab3.setMaximum(500)l.addWidget(widLab3)label4 = QLabel(headerLst[4][1], self.d)l.addWidget(label4)widLab4 = QSpinBox(self.d)widLab4.setMaximum(500)l.addWidget(widLab4)label5 = QLabel(headerLst[5][1], self.d)l.addWidget(label5)widLab5 = QDoubleSpinBox(self.d)widLab5.setMaximum(500000.0)l.addWidget(widLab5)label6 = QLabel(headerLst[6][1], self.d)l.addWidget(label6)widLab6 = QDoubleSpinBox(self.d)widLab6.setMaximum(10000.0)l.addWidget(widLab6)label7 = QLabel(headerLst[7][1], self.d)l.addWidget(label7)widLab7 = QDoubleSpinBox(self.d)widLab7.setMaximum(10000.0)479l.addWidget(widLab7)label8 = QLabel(headerLst[8][1], self.d)l.addWidget(label8)widLab8 = QDoubleSpinBox(self.d)widLab8.setMaximum(20000.0)l.addWidget(widLab8)label9 = QLabel(headerLst[9][1], self.d)l.addWidget(label9)widLab9 = QLineEdit(self.d)l.addWidget(widLab9)label10 = QLabel(headerLst[10][1], self.d)l.addWidget(label10)widLab10 = QComboBox(self.d)widLab10.addItems(self.languages)l.addWidget(widLab10)l.addWidget(buttons)dialog_layout = QVBoxLayout(self.d)dialog_layout.addWidget(scroll)self.d.setLayout(dialog_layout)self.d.layout().addWidget(scroll)if self.d.exec_() == QDialog.Accepted:conn.execute("INSERT INTO course VALUES (NULL, '%s', %f, %d, %d,%f, %f, %f, %f, '%s', '%s')" % (widLab1.text(), widLab2.value(), widLab3.value(),widLab4.value(), widLab5.value(), widLab6.value(), widLab7.value(),widLab8.value(), widLab9.text(), widLab10.currentText()))conn.commit()if self.noCourses == False:self.tableWidget1.deleteLater()self.showTableCourses()else:pass#print("cancelled")conn.close()def changeCourse(self):if self.ui.comboBox.currentIndex() > 0:self.d = QDialog()self.d.setWindowModality(QtCore.Qt.ApplicationModal)self.d.setMaximumSize(self.dialogMax[0], self.dialogMax[1])self.d.setMinimumSize(self.dialogMin[0], self.dialogMin[1])self.d.resize(self.dialogMin[0], self.dialogMin[1])scroll = QScrollArea(self.d)scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)viewport = QWidget(self.d)scroll.setWidget(viewport)scroll.setWidgetResizable(True)480l = QVBoxLayout(viewport)viewport.setLayout(l)buttons = QDialogButtonBox(QDialogButtonBox.Ok |QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self.d)buttons.accepted.connect(self.d.accept)buttons.rejected.connect(self.d.reject)# add widgetsconn = sqlite3.connect('cdo.db')headerLst = self.getLstSQL(conn.execute("PRAGMAtable_info(course)"))currId = int(self.ui.comboBox.currentText().split('-')[0])rows = conn.execute("SELECT * FROM course WHERE id=%d" % currId)lstForTable = self.getLstSQL(rows)[0]label1 = QLabel(headerLst[1][1], self.d)l.addWidget(label1)widLab1 = QLineEdit(self.d)widLab1.setText(str(lstForTable[1]))l.addWidget(widLab1)label2 = QLabel(headerLst[2][1], self.d)l.addWidget(label2)widLab2 = QDoubleSpinBox(self.d)widLab2.setMaximum(1000.0)widLab2.setValue(float(lstForTable[2]))l.addWidget(widLab2)label3 = QLabel(headerLst[3][1], self.d)l.addWidget(label3)widLab3 = QSpinBox(self.d)widLab3.setMaximum(500)widLab3.setValue(lstForTable[3])l.addWidget(widLab3)label4 = QLabel(headerLst[4][1], self.d)l.addWidget(label4)widLab4 = QSpinBox(self.d)widLab4.setMaximum(500)widLab4.setValue(lstForTable[4])l.addWidget(widLab4)label5 = QLabel(headerLst[5][1], self.d)l.addWidget(label5)widLab5 = QDoubleSpinBox(self.d)widLab5.setMaximum(500000.0)widLab5.setValue(float(lstForTable[5]))l.addWidget(widLab5)label6 = QLabel(headerLst[6][1], self.d)l.addWidget(label6)widLab6 = QDoubleSpinBox(self.d)widLab6.setMaximum(10000.0)widLab6.setValue(float(lstForTable[6]))481l.addWidget(widLab6)label7 = QLabel(headerLst[7][1], self.d)l.addWidget(label7)widLab7 = QDoubleSpinBox(self.d)widLab7.setMaximum(10000.0)widLab7.setValue(float(lstForTable[7]))l.addWidget(widLab7)label8 = QLabel(headerLst[8][1], self.d)l.addWidget(label8)widLab8 = QDoubleSpinBox(self.d)widLab8.setMaximum(20000.0)widLab8.setValue(float(lstForTable[8]))l.addWidget(widLab8)label9 = QLabel(headerLst[9][1], self.d)l.addWidget(label9)widLab9 = QLineEdit(self.d)widLab9.setText(str(lstForTable[9]))l.addWidget(widLab9)label10 = QLabel(headerLst[10][1], self.d)l.addWidget(label10)widLab10 = QComboBox(self.d)widLab10.addItems(self.languages)widLab10.setCurrentText(str(lstForTable[10]))l.addWidget(widLab10)l.addWidget(buttons)dialog_layout = QVBoxLayout(self.d)dialog_layout.addWidget(scroll)self.d.setLayout(dialog_layout)self.d.layout().addWidget(scroll)if self.d.exec_() == QDialog.Accepted:conn.execute("UPDATE course SET %s='%s', %s=%f, %s=%d,%s=%d, %s=%f, %s=%f, %s=%f, %s=%f, %s='%s', %s='%s' WHERE id=%d" %(headerLst[1][1], widLab1.text(), headerLst[2][1], widLab2.value(),headerLst[3][1], widLab3.value(), headerLst[4][1], widLab4.value(),headerLst[5][1], widLab5.value(), headerLst[6][1], widLab6.value(),headerLst[7][1], widLab7.value(), headerLst[8][1], widLab8.value(),headerLst[9][1], widLab9.text(), headerLst[10][1], widLab10.currentText(),currId))conn.commit()self.ui.comboBox.setCurrentIndex(0)if self.noCourses == False:self.tableWidget1.deleteLater()self.showTableCourses()else:passconn.close()def addStudent(self):self.d = QDialog()482self.d.setWindowModality(QtCore.Qt.ApplicationModal)self.d.setMaximumSize(self.dialogMax[0], self.dialogMax[1])self.d.setMinimumSize(self.dialogMin[0], self.dialogMin[1])self.d.resize(self.dialogMin[0], self.dialogMin[1])scroll = QScrollArea(self.d)scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)viewport = QWidget(self.d)scroll.setWidget(viewport)scroll.setWidgetResizable(True)l = QVBoxLayout(viewport)viewport.setLayout(l)buttons = QDialogButtonBox(QDialogButtonBox.Ok |QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self.d)buttons.accepted.connect(self.d.accept)buttons.rejected.connect(self.d.reject)# add widgetsconn = sqlite3.connect('cdo.db')headerLst = self.getLstSQL(conn.execute("PRAGMAtable_info(student)"))label1 = QLabel(headerLst[1][1], self.d)l.addWidget(label1)widLab1 = QLineEdit(self.d)l.addWidget(widLab1)label2 = QLabel(headerLst[2][1], self.d)l.addWidget(label2)widLab2 = QLineEdit(self.d)l.addWidget(widLab2)label3 = QLabel(headerLst[3][1], self.d)l.addWidget(label3)widLab3 = QLineEdit(self.d)l.addWidget(widLab3)label4 = QLabel(headerLst[4][1], self.d)l.addWidget(label4)widLab4 = QLineEdit(self.d)l.addWidget(widLab4)label5 = QLabel(headerLst[5][1], self.d)l.addWidget(label5)widLab5 = QLineEdit(self.d)l.addWidget(widLab5)label6 = QLabel(headerLst[6][1], self.d)l.addWidget(label6)widLab6 = QDateEdit(self.d)widLab6.setDisplayFormat('yyyy-MM-dd')483#widLab6.setDate(date.today())widLab6.setCalendarPopup(True)l.addWidget(widLab6)label7 = QLabel(headerLst[7][1], self.d)l.addWidget(label7)widLab7 = QLineEdit(self.d)l.addWidget(widLab7)label8 = QLabel(headerLst[8][1], self.d)l.addWidget(label8)widLab8 = QLineEdit(self.d)l.addWidget(widLab8)l.addWidget(buttons)dialog_layout = QVBoxLayout(self.d)dialog_layout.addWidget(scroll)self.d.setLayout(dialog_layout)self.d.layout().addWidget(scroll)if self.d.exec_() == QDialog.Accepted:date = widLab6.date().toString('yyyy-MM-dd')conn.execute("INSERT INTO student VALUES (?, ?, ?, ?, ?, ?, ?,?, ?)", (None, widLab1.text(), widLab2.text(), widLab3.text(), widLab4.text(),widLab5.text(), date, widLab7.text(), widLab8.text()))#conn.execute("INSERT INTO student VALUES (NULL, '%s', '%s','%s', '%s', '%s', %s, '%s', '%s')" % (widLab1.text(), widLab2.text(),widLab3.text(), widLab4.text(), widLab5.text(), date, widLab7.text(),widLab8.text()))conn.commit()if self.noStudents == False:self.tableWidget2.deleteLater()self.showTableStudents()else:pass#print("cancelled")def changeStudent(self):if self.ui.comboBox_2.currentIndex() > 0:self.d = QDialog()self.d.setWindowModality(QtCore.Qt.ApplicationModal)self.d.setMaximumSize(self.dialogMax[0], self.dialogMax[1])self.d.setMinimumSize(self.dialogMin[0], self.dialogMin[1])self.d.resize(self.dialogMin[0], self.dialogMin[1])scroll = QScrollArea(self.d)scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)viewport = QWidget(self.d)scroll.setWidget(viewport)scroll.setWidgetResizable(True)l = QVBoxLayout(viewport)viewport.setLayout(l)484buttons = QDialogButtonBox(QDialogButtonBox.Ok |QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self.d)buttons.accepted.connect(self.d.accept)buttons.rejected.connect(self.d.reject)# add widgetsconn = sqlite3.connect('cdo.db')headerLst = self.getLstSQL(conn.execute("PRAGMAtable_info(student)"))currId = int(self.ui.comboBox_2.currentText().split('-')[0])rows = conn.execute("SELECT * FROM student WHERE id=%d" %currId)lstForTable = self.getLstSQL(rows)[0]label1 = QLabel(headerLst[1][1], self.d)l.addWidget(label1)widLab1 = QLineEdit(self.d)widLab1.setText(lstForTable[1])l.addWidget(widLab1)label2 = QLabel(headerLst[2][1], self.d)l.addWidget(label2)widLab2 = QLineEdit(self.d)widLab2.setText(lstForTable[2])l.addWidget(widLab2)label3 = QLabel(headerLst[3][1], self.d)l.addWidget(label3)widLab3 = QLineEdit(self.d)widLab3.setText(lstForTable[3])l.addWidget(widLab3)label4 = QLabel(headerLst[4][1], self.d)l.addWidget(label4)widLab4 = QLineEdit(self.d)widLab4.setText(lstForTable[4])l.addWidget(widLab4)label5 = QLabel(headerLst[5][1], self.d)l.addWidget(label5)widLab5 = QLineEdit(self.d)widLab5.setText(lstForTable[5])l.addWidget(widLab5)label6 = QLabel(headerLst[6][1], self.d)l.addWidget(label6)widLab6 = QDateEdit(self.d)widLab6.setDisplayFormat('yyyy-MM-dd')#widLab6.setDate(date.today())widLab6.setCalendarPopup(True)widLab6.setDate(QDate.fromString(lstForTable[6], 'yyyy-MM-dd'))l.addWidget(widLab6)label7 = QLabel(headerLst[7][1], self.d)485l.addWidget(label7)widLab7 = QLineEdit(self.d)widLab7.setText(lstForTable[7])l.addWidget(widLab7)label8 = QLabel(headerLst[8][1], self.d)l.addWidget(label8)widLab8 = QLineEdit(self.d)widLab8.setText(lstForTable[8])l.addWidget(widLab8)l.addWidget(buttons)dialog_layout = QVBoxLayout(self.d)dialog_layout.addWidget(scroll)self.d.setLayout(dialog_layout)self.d.layout().addWidget(scroll)if self.d.exec_() == QDialog.Accepted:date = widLab6.date().toString('yyyy-MM-dd')conn.execute("UPDATE student SET %s='%s', %s='%s', %s='%s',%s='%s', %s='%s', %s='%s', %s='%s', %s='%s' WHERE id=%d" % (headerLst[1][1],widLab1.text(), headerLst[2][1], widLab2.text(), headerLst[3][1], widLab3.text(),headerLst[4][1], widLab4.text(), headerLst[5][1], widLab5.text(), headerLst[6][1],date, headerLst[7][1], widLab7.text(), headerLst[8][1], widLab8.text(), currId))#conn.execute("INSERT INTO tutor VALUES (?, ?, ?, ?, ?, ?,?, ?)", (None, widLab1.text(), widLab2.text(), widLab3.text(), widLab4.text(),widLab5.text(), widLab6.text(), widLab7.text()))conn.commit()self.ui.comboBox_2.setCurrentIndex(0)if self.noStudents == False:self.tableWidget2.deleteLater()self.showTableStudents()else:passdef addTutor(self):self.d = QDialog()self.d.setWindowModality(QtCore.Qt.ApplicationModal)self.d.setMaximumSize(self.dialogMax[0], self.dialogMax[1])self.d.setMinimumSize(self.dialogMin[0], self.dialogMin[1])self.d.resize(self.dialogMin[0], self.dialogMin[1])scroll = QScrollArea(self.d)scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)viewport = QWidget(self.d)scroll.setWidget(viewport)scroll.setWidgetResizable(True)l = QVBoxLayout(viewport)viewport.setLayout(l)buttons = QDialogButtonBox(QDialogButtonBox.Ok |QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self.d)486buttons.accepted.connect(self.d.accept)buttons.rejected.connect(self.d.reject)# add widgetsconn = sqlite3.connect('cdo.db')headerLst = self.getLstSQL(conn.execute("PRAGMA table_info(tutor)"))label1 = QLabel(headerLst[1][1], self.d)l.addWidget(label1)widLab1 = QLineEdit(self.d)l.addWidget(widLab1)label2 = QLabel(headerLst[2][1], self.d)l.addWidget(label2)widLab2 = QLineEdit(self.d)l.addWidget(widLab2)label3 = QLabel(headerLst[3][1], self.d)l.addWidget(label3)widLab3 = QLineEdit(self.d)l.addWidget(widLab3)label4 = QLabel(headerLst[4][1], self.d)l.addWidget(label4)widLab4 = QLineEdit(self.d)l.addWidget(widLab4)label5 = QLabel(headerLst[5][1], self.d)l.addWidget(label5)widLab5 = QLineEdit(self.d)l.addWidget(widLab5)label6 = QLabel(headerLst[6][1], self.d)l.addWidget(label6)widLab6 = QLineEdit(self.d)l.addWidget(widLab6)label7 = QLabel(headerLst[7][1], self.d)l.addWidget(label7)widLab7 = QLineEdit(self.d)l.addWidget(widLab7)l.addWidget(buttons)dialog_layout = QVBoxLayout(self.d)dialog_layout.addWidget(scroll)self.d.setLayout(dialog_layout)self.d.layout().addWidget(scroll)if self.d.exec_() == QDialog.Accepted:conn.execute("INSERT INTO tutor VALUES (?, ?, ?, ?, ?, ?, ?,?)", (None, widLab1.text(), widLab2.text(), widLab3.text(), widLab4.text(),widLab5.text(), widLab6.text(), widLab7.text()))conn.commit()if self.noTutors == False:self.tableWidget3.deleteLater()487self.showTableTutors()else:passdef changeTutor(self):if self.ui.comboBox_3.currentIndex() > 0:self.d = QDialog()self.d.setWindowModality(QtCore.Qt.ApplicationModal)self.d.setMaximumSize(self.dialogMax[0], self.dialogMax[1])self.d.setMinimumSize(self.dialogMin[0], self.dialogMin[1])self.d.resize(self.dialogMin[0], self.dialogMin[1])scroll = QScrollArea(self.d)scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)viewport = QWidget(self.d)scroll.setWidget(viewport)scroll.setWidgetResizable(True)l = QVBoxLayout(viewport)viewport.setLayout(l)buttons = QDialogButtonBox(QDialogButtonBox.Ok |QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self.d)buttons.accepted.connect(self.d.accept)buttons.rejected.connect(self.d.reject)# add widgetsconn = sqlite3.connect('cdo.db')headerLst = self.getLstSQL(conn.execute("PRAGMAtable_info(tutor)"))currId = int(self.ui.comboBox_3.currentText().split('-')[0])rows = conn.execute("SELECT * FROM tutor WHERE id=%d" % currId)lstForTable = self.getLstSQL(rows)[0]label1 = QLabel(headerLst[1][1], self.d)l.addWidget(label1)widLab1 = QLineEdit(self.d)widLab1.setText(str(lstForTable[1]))l.addWidget(widLab1)label2 = QLabel(headerLst[2][1], self.d)l.addWidget(label2)widLab2 = QLineEdit(self.d)widLab2.setText(str(lstForTable[2]))l.addWidget(widLab2)label3 = QLabel(headerLst[3][1], self.d)l.addWidget(label3)widLab3 = QLineEdit(self.d)widLab3.setText(str(lstForTable[3]))l.addWidget(widLab3)label4 = QLabel(headerLst[4][1], self.d)488l.addWidget(label4)widLab4 = QLineEdit(self.d)widLab4.setText(str(lstForTable[4]))l.addWidget(widLab4)label5 = QLabel(headerLst[5][1], self.d)l.addWidget(label5)widLab5 = QLineEdit(self.d)widLab5.setText(str(lstForTable[5]))l.addWidget(widLab5)label6 = QLabel(headerLst[6][1], self.d)l.addWidget(label6)widLab6 = QLineEdit(self.d)widLab6.setText(str(lstForTable[6]))l.addWidget(widLab6)label7 = QLabel(headerLst[7][1], self.d)l.addWidget(label7)widLab7 = QLineEdit(self.d)widLab7.setText(str(lstForTable[7]))l.addWidget(widLab7)l.addWidget(buttons)dialog_layout = QVBoxLayout(self.d)dialog_layout.addWidget(scroll)self.d.setLayout(dialog_layout)self.d.layout().addWidget(scroll)if self.d.exec_() == QDialog.Accepted:conn.execute("UPDATE tutor SET %s='%s', %s='%s', %s='%s',%s='%s', %s='%s', %s='%s', %s='%s' WHERE id=%d" % (headerLst[1][1],widLab1.text(), headerLst[2][1], widLab2.text(), headerLst[3][1], widLab3.text(),headerLst[4][1], widLab4.text(), headerLst[5][1], widLab5.text(), headerLst[6][1],widLab6.text(), headerLst[7][1], widLab7.text(), currId))#conn.execute("INSERT INTO tutor VALUES (?, ?, ?, ?, ?, ?,?, ?)", (None, widLab1.text(), widLab2.text(), widLab3.text(), widLab4.text(),widLab5.text(), widLab6.text(), widLab7.text()))conn.commit()self.ui.comboBox_3.setCurrentIndex(0)if self.noTutors == False:self.tableWidget3.deleteLater()self.showTableTutors()else:passdef addAuth(self):self.d = QDialog()self.d.setWindowModality(QtCore.Qt.ApplicationModal)self.d.setMaximumSize(self.dialogMax[0], self.dialogMax[1])self.d.setMinimumSize(self.dialogMin[0], self.dialogMin[1])self.d.resize(self.dialogMin[0], self.dialogMin[1])scroll = QScrollArea(self.d)scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)489scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)viewport = QWidget(self.d)scroll.setWidget(viewport)scroll.setWidgetResizable(True)l = QVBoxLayout(viewport)viewport.setLayout(l)buttons = QDialogButtonBox(QDialogButtonBox.Ok |QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self.d)buttons.accepted.connect(self.d.accept)buttons.rejected.connect(self.d.reject)# add widgetsconn = sqlite3.connect('cdo.db')headerLst = self.getLstSQL(conn.execute("PRAGMAtable_info(authorized)"))# all tutorstutors = self.getLstSQL(conn.execute("SELECT * FROM tutor"))tutorsCombo = []tutorsCombo.append("---")for t in tutors:tutorsCombo.append(t[1] + " " + t[2] + " " + t[3] + " : " +str(t[0]))label1 = QLabel(headerLst[1][1], self.d)l.addWidget(label1)widLab1 = QComboBox(self.d)tutorsCombo.sort()widLab1.addItems(tutorsCombo)l.addWidget(widLab1)# all coursescourses = self.getLstSQL(conn.execute("SELECT * FROM course"))coursesCombo = []coursesCombo.append("---")for t in courses:coursesCombo.append(t[1] + " : " + str(t[0]))label2 = QLabel(headerLst[2][1], self.d)l.addWidget(label2)widLab2 = QComboBox(self.d)coursesCombo.sort()widLab2.addItems(coursesCombo)l.addWidget(widLab2)label3 = QLabel(headerLst[3][1], self.d)l.addWidget(label3)widLab3 = QDateEdit(self.d)widLab3.setDisplayFormat('yyyy-MM-dd')widLab3.setDate(date.today())widLab3.setCalendarPopup(True)l.addWidget(widLab3)l.addWidget(buttons)490dialog_layout = QVBoxLayout(self.d)dialog_layout.addWidget(scroll)self.d.setLayout(dialog_layout)self.d.layout().addWidget(scroll)if self.d.exec_() == QDialog.Accepted:tutorId = widLab1.currentText().split(":")[-1].strip()courseId = widLab2.currentText().split(":")[-1].strip()conn.execute("INSERT INTO authorized VALUES (?, ?, ?, ?)",(None, tutorId, courseId, widLab3.date().toString('yyyy-MM-dd')))conn.commit()if self.noAuth == False:self.tableWidget4.deleteLater()self.showTableAuthorized()if self.noTutors == False:self.tableWidget3.deleteLater()self.showTableTutors()else:pass#print("cancelled")def addCST(self):self.d = QDialog()self.d.setWindowModality(QtCore.Qt.ApplicationModal)self.d.setMaximumSize(self.dialogMax[0], self.dialogMax[1])self.d.setMinimumSize(self.dialogMin[0], self.dialogMin[1])self.d.resize(self.dialogMin[0], self.dialogMin[1])scroll = QScrollArea(self.d)scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)viewport = QWidget(self.d)scroll.setWidget(viewport)scroll.setWidgetResizable(True)l = QVBoxLayout(viewport)viewport.setLayout(l)buttons = QDialogButtonBox(QDialogButtonBox.Ok |QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self.d)buttons.accepted.connect(self.d.accept)buttons.rejected.connect(self.d.reject)# add widgetsconn = sqlite3.connect('cdo.db')headerLst = self.getLstSQL(conn.execute("PRAGMAtable_info(coursesfortutor)"))# active/not activelabel = QLabel(headerLst[1][1], self.d)l.addWidget(label)widLab = QComboBox(self.d)widLab.addItems(["1", "0"])l.addWidget(widLab)491# all coursescourses = self.getLstSQL(conn.execute("SELECT * FROM course"))conn.close()coursesCombo = []coursesCombo.append("---")for t in courses:coursesCombo.append(t[1] + " : " + str(t[0]))label1 = QLabel(headerLst[2][1], self.d)l.addWidget(label1)self.widLab1 = QComboBox(self.d)coursesCombo.sort()self.widLab1.addItems(coursesCombo)l.addWidget(self.widLab1)self.widLab1.currentIndexChanged.connect(self.tutorsForCourse)# all tutorsconn = sqlite3.connect('cdo.db')tutors = self.getLstSQL(conn.execute("SELECT * FROM tutor"))tutorsCombo = []tutorsCombo.append("---")for t in tutors:tutorsCombo.append(t[1] + " " + t[2] + " " + t[3] + " : " +str(t[0]))label2 = QLabel(headerLst[3][1], self.d)l.addWidget(label2)self.widLab2 = QComboBox(self.d)tutorsCombo.sort()#self.widLab2.addItems(tutorsCombo)#self.widLab2.addItems(self.tutorsForCourse())l.addWidget(self.widLab2)# all studentsstudents = self.getLstSQL(conn.execute("SELECT * FROM student"))studentsCombo = []studentsCombo.append("---")for t in students:studentsCombo.append(t[1] + " " + t[2] + " " + t[3] + " : " +str(t[0]))label3 = QLabel(headerLst[4][1], self.d)l.addWidget(label3)widLab3 = QComboBox(self.d)studentsCombo.sort()widLab3.addItems(studentsCombo)l.addWidget(widLab3)# all tutors/examonorslabel4 = QLabel(headerLst[5][1], self.d)l.addWidget(label4)self.widLab4 = QComboBox(self.d)#self.widLab4.addItems(tutorsCombo)#self.widLab4.addItems(self.tutorsForCourse())l.addWidget(self.widLab4)492label5 = QLabel(headerLst[6][1], self.d)l.addWidget(label5)widLab5 = QLineEdit(self.d)l.addWidget(widLab5)label6 = QLabel(headerLst[7][1], self.d)l.addWidget(label6)widLab6 = QDateEdit(self.d)widLab6.setDisplayFormat('yyyy-MM-dd')widLab6.setDate(date.today())widLab6.setCalendarPopup(True)l.addWidget(widLab6)label7 = QLabel(headerLst[8][1], self.d)l.addWidget(label7)widLab7 = QDateEdit(self.d)widLab7.setDisplayFormat('yyyy-MM-dd')widLab7.setDate(date.today())widLab7.setCalendarPopup(True)l.addWidget(widLab7)label8 = QLabel(headerLst[9][1], self.d)l.addWidget(label8)widLab8 = QSpinBox(self.d)widLab8.setMaximum(1000)widLab8.setMinimum(0)l.addWidget(widLab8)label9 = QLabel(headerLst[10][1], self.d)l.addWidget(label9)widLab9 = QDateEdit(self.d)widLab9.setDisplayFormat('yyyy-MM-dd')widLab9.setDate(date.today())widLab9.setCalendarPopup(True)l.addWidget(widLab9)label10 = QLabel(headerLst[11][1], self.d)l.addWidget(label10)self.widLab10 = QDateEdit(self.d)self.widLab10.setDisplayFormat('yyyy-MM-dd')self.widLab10.setDate(date.today())self.widLab10.setCalendarPopup(True)l.addWidget(self.widLab10)label11 = QLabel(headerLst[12][1], self.d)l.addWidget(label11)self.widLab11 = QLineEdit(self.d)l.addWidget(self.widLab11)label12 = QLabel(headerLst[13][1], self.d)l.addWidget(label12)self.widLab12 = QLineEdit(self.d)l.addWidget(self.widLab12)493label13 = QLabel(headerLst[14][1], self.d)l.addWidget(label13)self.widLab13 = QSpinBox(self.d)self.widLab13.setMaximum(10)self.widLab13.setMinimum(0)l.addWidget(self.widLab13)label14 = QLabel(headerLst[15][1], self.d)l.addWidget(label14)self.widLab14 = QDoubleSpinBox(self.d)self.widLab14.setMaximum(500000.0)self.widLab14.setMinimum(0.0)l.addWidget(self.widLab14)label15 = QLabel(headerLst[16][1], self.d)l.addWidget(label15)self.widLab15 = QDoubleSpinBox(self.d)self.widLab15.setMaximum(10000.0)self.widLab15.setMinimum(0.0)l.addWidget(self.widLab15)label16 = QLabel(headerLst[17][1], self.d)l.addWidget(label16)self.widLab16 = QSpinBox(self.d)self.widLab16.setMaximum(100)self.widLab16.setMinimum(0)l.addWidget(self.widLab16)l.addWidget(buttons)dialog_layout = QVBoxLayout(self.d)dialog_layout.addWidget(scroll)self.d.setLayout(dialog_layout)self.d.layout().addWidget(scroll)if self.d.exec_() == QDialog.Accepted:courseId = self.widLab1.currentText().split(":")[-1].strip()tutorId = self.widLab2.currentText().split(":")[-1].strip()studentId = widLab3.currentText().split(":")[-1].strip()examinerId = self.widLab4.currentText().split(":")[-1].strip()if int(widLab9.date().toString('yyyy')) <int(QtCore.QDate.currentDate().toString('yyyy')):dateExam = Noneelse:dateExam = widLab9.date().toString('yyyy-MM-dd')if int(self.widLab10.date().toString('yyyy')) <int(QtCore.QDate.currentDate().toString('yyyy')):dateSertificate = Noneelse:dateSertificate = self.widLab10.date().toString('yyyy-MMdd')#print(bool(widLab.currentText()), courseId, tutorId, studentId,examinerId, widLab5.text(), widLab6.date().toString('yyyy-MM-dd'),widLab7.date().toString('yyyy-MM-dd'), widLab8.value(),widLab9.date().toString('yyyy-MM-dd'), self.widLab10.date().toString('yyyy-MM-494dd'), self.widLab11.text(), self.widLab12.text(), self.widLab13.value(),self.widLab14.value(), self.widLab15.value(), self.widLab16.value())if widLab.currentText() == '1':activeOrNot = Trueelse:activeOrNot = Falseconn.execute("INSERT INTO coursesfortutor VALUES (?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (None, activeOrNot, courseId, tutorId,studentId, examinerId, widLab5.text()+"-ДО", widLab6.date().toString('yyyy-MMdd'), widLab7.date().toString('yyyy-MM-dd'), widLab8.value(), dateExam,dateSertificate, self.widLab11.text(), self.widLab12.text(),self.widLab13.value(), self.widLab14.value(), self.widLab15.value(),self.widLab16.value()))conn.commit()if self.noCST == False:self.tableWidget.deleteLater()self.showTableCourseForTutors()self.updateAllTableCSTTables()else:pass#print("cancelled")def changeCST(self):if self.ui.comboBox_4.currentIndex() > 0:self.d = QDialog()self.d.setWindowModality(QtCore.Qt.ApplicationModal)self.d.setMaximumSize(self.dialogMax[0], self.dialogMax[1])self.d.setMinimumSize(self.dialogMin[0], self.dialogMin[1])self.d.resize(self.dialogMin[0], self.dialogMin[1])scroll = QScrollArea(self.d)scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)viewport = QWidget(self.d)scroll.setWidget(viewport)scroll.setWidgetResizable(True)l = QVBoxLayout(viewport)viewport.setLayout(l)buttons = QDialogButtonBox(QDialogButtonBox.Ok |QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self.d)buttons.accepted.connect(self.d.accept)buttons.rejected.connect(self.d.reject)# add widgetsconn = sqlite3.connect('cdo.db')headerLst = self.getLstSQL(conn.execute("PRAGMAtable_info(coursesfortutor)"))currId = int(self.ui.comboBox_4.currentText().split('-')[0])rows = conn.execute("SELECT * FROM coursesfortutor WHERE id=%d"% currId)lstForTable = self.getLstSQL(rows)[0]495# active/not activelabel = QLabel(headerLst[1][1], self.d)l.addWidget(label)widLab = QComboBox(self.d)widLab.addItems(["1", "0"])widLab.setCurrentText(str(lstForTable[1]))l.addWidget(widLab)# all coursescourses = self.getLstSQL(conn.execute("SELECT * FROM course"))conn.close()coursesCombo = []coursesCombo.append("---")for t in courses:coursesCombo.append(t[1] + " : " + str(t[0]))label1 = QLabel(headerLst[2][1], self.d)l.addWidget(label1)self.widLab1 = QComboBox(self.d)coursesCombo.sort()self.widLab1.addItems(coursesCombo)for i in range(1, len(coursesCombo)):if int(coursesCombo[i].split(':')[-1]) == lstForTable[2]:self.widLab1.setCurrentIndex(i)l.addWidget(self.widLab1)#self.widLab1.currentIndexChanged.connect(self.tutorsForCourse)# all tutorsconn = sqlite3.connect('cdo.db')tutors = self.getLstSQL(conn.execute("SELECT * FROM tutor"))tutorsCombo = []tutorsCombo.append("---")for t in tutors:tutorsCombo.append(t[1] + " " + t[2] + " " + t[3] + " : " +str(t[0]))label2 = QLabel(headerLst[3][1], self.d)l.addWidget(label2)self.widLab2 = QComboBox(self.d)tutorsCombo.sort()self.widLab2.addItems(tutorsCombo)for i in range(1, len(tutorsCombo)):if int(tutorsCombo[i].split(':')[-1]) == lstForTable[3]:self.widLab2.setCurrentIndex(i)#self.widLab2.addItems(tutorsCombo)#self.widLab2.addItems(self.tutorsForCourse())l.addWidget(self.widLab2)# all studentsstudents = self.getLstSQL(conn.execute("SELECT * FROM student"))studentsCombo = []studentsCombo.append("---")for t in students:studentsCombo.append(t[1] + " " + t[2] + " " + t[3] + " : "+ str(t[0]))496label3 = QLabel(headerLst[4][1], self.d)l.addWidget(label3)widLab3 = QComboBox(self.d)studentsCombo.sort()widLab3.addItems(studentsCombo)for i in range(1, len(studentsCombo)):if int(studentsCombo[i].split(':')[-1]) == lstForTable[4]:widLab3.setCurrentIndex(i)l.addWidget(widLab3)# all tutors/examinerslabel4 = QLabel(headerLst[5][1], self.d)l.addWidget(label4)self.widLab4 = QComboBox(self.d)self.widLab4.addItems(tutorsCombo)for i in range(1, len(tutorsCombo)):if int(tutorsCombo[i].split(':')[-1]) == lstForTable[5]:self.widLab4.setCurrentIndex(i)#self.widLab4.addItems(tutorsCombo)#self.widLab4.addItems(self.tutorsForCourse())l.addWidget(self.widLab4)label5 = QLabel(headerLst[6][1], self.d)l.addWidget(label5)widLab5 = QLineEdit(self.d)widLab5.setText(str(lstForTable[6]))l.addWidget(widLab5)label6 = QLabel(headerLst[7][1], self.d)l.addWidget(label6)widLab6 = QDateEdit(self.d)widLab6.setDisplayFormat('yyyy-MM-dd')widLab6.setDate(date.today())widLab6.setCalendarPopup(True)widLab6.setDate(QDate.fromString(lstForTable[7], 'yyyy-MM-dd'))l.addWidget(widLab6)label7 = QLabel(headerLst[8][1], self.d)l.addWidget(label7)widLab7 = QDateEdit(self.d)widLab7.setDisplayFormat('yyyy-MM-dd')widLab7.setDate(date.today())widLab7.setCalendarPopup(True)widLab6.setDate(QDate.fromString(lstForTable[8], 'yyyy-MM-dd'))l.addWidget(widLab7)label8 = QLabel(headerLst[9][1], self.d)l.addWidget(label8)widLab8 = QSpinBox(self.d)widLab8.setMaximum(1000)widLab8.setMinimum(0)widLab8.setValue(lstForTable[9])l.addWidget(widLab8)label9 = QLabel(headerLst[10][1], self.d)497l.addWidget(label9)widLab9 = QDateEdit(self.d)widLab9.setDisplayFormat('yyyy-MM-dd')widLab9.setDate(date.today())widLab9.setCalendarPopup(True)widLab9.setDate(QDate.fromString(lstForTable[10], 'yyyy-MM-dd'))l.addWidget(widLab9)label10 = QLabel(headerLst[11][1], self.d)l.addWidget(label10)self.widLab10 = QDateEdit(self.d)self.widLab10.setDisplayFormat('yyyy-MM-dd')self.widLab10.setDate(date.today())self.widLab10.setCalendarPopup(True)self.widLab10.setDate(QDate.fromString(lstForTable[11], 'yyyyMM-dd'))l.addWidget(self.widLab10)label11 = QLabel(headerLst[12][1], self.d)l.addWidget(label11)self.widLab11 = QLineEdit(self.d)self.widLab11.setText(str(lstForTable[12]))l.addWidget(self.widLab11)label12 = QLabel(headerLst[13][1], self.d)l.addWidget(label12)self.widLab12 = QLineEdit(self.d)self.widLab12.setText(str(lstForTable[13]))l.addWidget(self.widLab12)label13 = QLabel(headerLst[14][1], self.d)l.addWidget(label13)self.widLab13 = QSpinBox(self.d)self.widLab13.setMaximum(10)self.widLab13.setMinimum(0)self.widLab13.setValue(lstForTable[14])l.addWidget(self.widLab13)label14 = QLabel(headerLst[15][1], self.d)l.addWidget(label14)self.widLab14 = QDoubleSpinBox(self.d)self.widLab14.setMaximum(500000.0)self.widLab14.setMinimum(0.0)self.widLab14.setValue(lstForTable[15])l.addWidget(self.widLab14)label15 = QLabel(headerLst[16][1], self.d)l.addWidget(label15)self.widLab15 = QDoubleSpinBox(self.d)self.widLab15.setMaximum(10000.0)self.widLab15.setMinimum(0.0)self.widLab15.setValue(lstForTable[16])l.addWidget(self.widLab15)label16 = QLabel(headerLst[17][1], self.d)498l.addWidget(label16)self.widLab16 = QSpinBox(self.d)self.widLab16.setMaximum(100)self.widLab16.setMinimum(0)self.widLab16.setValue(lstForTable[17])l.addWidget(self.widLab16)l.addWidget(buttons)dialog_layout = QVBoxLayout(self.d)dialog_layout.addWidget(scroll)self.d.setLayout(dialog_layout)self.d.layout().addWidget(scroll)if self.d.exec_() == QDialog.Accepted:courseId = self.widLab1.currentText().split(":")[-1].strip()tutorId = self.widLab2.currentText().split(":")[-1].strip()studentId = widLab3.currentText().split(":")[-1].strip()examinerId = self.widLab4.currentText().split(":")[1].strip()if int(widLab9.date().toString('yyyy')) <int(QtCore.QDate.currentDate().toString('yyyy')):dateExam = Noneelse:dateExam = widLab9.date().toString('yyyy-MM-dd')if int(self.widLab10.date().toString('yyyy')) <int(QtCore.QDate.currentDate().toString('yyyy')):dateSertificate = Noneelse:dateSertificate = self.widLab10.date().toString('yyyyMM-dd')#print(bool(widLab.currentText()), courseId, tutorId,studentId, examinerId, widLab5.text(), widLab6.date().toString('yyyy-MM-dd'),widLab7.date().toString('yyyy-MM-dd'), widLab8.value(),widLab9.date().toString('yyyy-MM-dd'), self.widLab10.date().toString('yyyy-MMdd'), self.widLab11.text(), self.widLab12.text(), self.widLab13.value(),self.widLab14.value(), self.widLab15.value(), self.widLab16.value())if widLab.currentText() == '1':activeOrNot = Trueelse:activeOrNot = False#conn.execute("UPDATE tutor SET %s='%s', %s='%s', %s='%s',%s='%s', %s='%s', %s='%s', %s='%s' WHERE id=%d" % (headerLst[1][1], activeOrNot,headerLst[2][1], courseId, headerLst[3][1], tutorId, headerLst[4][1], studentId,headerLst[5][1], examinerId, headerLst[6][1], widLab5.text()+"-ДО",headerLst[7][1], widLab6.date().toString('yyyy-MM-dd'), headerLst[8][1],widLab7.date().toString('yyyy-MM-dd'), headerLst[9][1], widLab8.value(),headerLst[10][1], dateExam, headerLst[11][1], dateSertificate, headerLst[12][1],self.widLab11.text(), headerLst[13][1], self.widLab12.text(), headerLst[14][1],self.widLab13.value(), headerLst[15][1], self.widLab14.value(), headerLst[16][1],self.widLab15.value(), headerLst[17][1], self.widLab16.value(), currId))conn.execute("UPDATE coursesfortutor SET %s=%d, %s=%d,%s=%d, %s=%d, %s=%d, %s='%s', %s='%s', %s='%s', %s=%d, %s='%s', %s='%s', %s='%s',%s='%s', %s=%d, %s=%d, %s=%d, %s=%d WHERE id=%d" % (headerLst[1][1],499int(widLab.currentText()), headerLst[2][1], int(courseId), headerLst[3][1],int(tutorId), headerLst[4][1], int(studentId), headerLst[5][1], int(examinerId),headerLst[6][1], widLab5.text(), headerLst[7][1], widLab6.date().toString('yyyyMM-dd'),headerLst[8][1], widLab7.date().toString('yyyy-MM-dd'), headerLst[9][1],widLab8.value(),headerLst[10][1], widLab9.date().toString('yyyy-MM-dd'), headerLst[11][1],self.widLab10.date().toString('yyyy-MM-dd'),headerLst[12][1], self.widLab11.text(), headerLst[13][1], self.widLab12.text(),headerLst[14][1], self.widLab13.value(), headerLst[15][1], self.widLab14.value(),headerLst[16][1], self.widLab15.value(), headerLst[17][1], self.widLab16.value(),currId))#conn.execute("INSERT INTO tutor VALUES (?, ?, ?, ?, ?, ?,?, ?)", (None, widLab1.text(), widLab2.text(), widLab3.text(), widLab4.text(),widLab5.text(), widLab6.text(), widLab7.text()))conn.commit()self.ui.comboBox_3.setCurrentIndex(0)if self.noCST == False:self.tableWidget.deleteLater()self.showTableCourseForTutors()self.updateAllTableCSTTables()else:pass"""conn.execute("INSERT INTO coursesfortutor VALUES (?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (None, activeOrNot, courseId,tutorId, studentId, examinerId, widLab5.text()+"-ДО",widLab6.date().toString('yyyy-MM-dd'), widLab7.date().toString('yyyy-MM-dd'),widLab8.value(), dateExam, dateSertificate, self.widLab11.text(),self.widLab12.text(), self.widLab13.value(), self.widLab14.value(),self.widLab15.value(), self.widLab16.value()))conn.commit()if self.noCST == False:self.tableWidget.deleteLater()self.showTableCourseForTutors()self.updateAllTableCSTTables()else:pass#print("cancelled")"""def tutorsForCourse(self):if ':' in self.widLab1.currentText():course = self.widLab1.currentText().split(':')[0].strip()conn = sqlite3.connect('cdo.db')courseId = self.getStrSQL(conn.execute("SELECT id FROM courseWHERE coursename='%s'" % course))tutors = self.getLstSQL(conn.execute("SELECT tutor FROMauthorized WHERE course=%d AND limitdate > date('now')" % int(courseId)))500tList = []for t in tutors:name = self.getLstSQL(conn.execute("SELECT * FROM tutorWHERE id=%d" % int(t[0])))fullname = name[0][1] + " " + name[0][2] + " " + name[0][3]+ " : " + str(name[0][0])tList.append(fullname)tList.sort()conn.close()self.widLab2.clear()self.widLab2.addItems(tList)self.widLab2.update()self.widLab4.clear()self.widLab4.addItems(tList)self.widLab4.update()else:self.widLab2.clear()self.widLab2.update()self.widLab4.clear()self.widLab4.update()def financialGROut(self):# how many courses.