Дипломная работа: Автоматизация учета предоставленных услуг в комплексном центре социального обслуживания населения и анализа данных на примере СПБ ГБУСОН "КЦСОН Адмиралтейского района Санкт-Петербурга"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
151
return cmb.model().data(ind, Qt.EditRole)
def pre_ins_main(self, gotoUI=None):
ui = self.ui
d = self.data
#############################
# get data for insert
# ---------------------------
ufio = self.getComboBox0(ui.comboFIO)
vdate = ui.qle_date.date().toString("yyyy-MM-dd")
dep = self.data.dep
if ui.qleAmount.value() <= 0: # TODO: more checks
return
contr=self.data.get_contract(ufio, vdate, dep)
debug(contr)
qry_data = [
contr,
dep,
ufio,
self.getComboBox0(ui.comboServ),
vdate,
ui.qleAmount.value(),
self.getComboBox0(ui.comboW),
ui.qleNote.text()
]
self.ins_main(qry_data)
if gotoUI:
gotoUI.setFocus()
def ins_main(self, qry_data):
ui = self.ui
d = self.data
#############################
# check holiday
# ---------------------------
if qry_data:
pass
#############################
# insert
# ---------------------------
ret = self.data.si.insert_main_table(*qry_data)
ret, rid, err = ret
#############################
# check result
# ---------------------------
if ret:
if not ui.chkLFio.isChecked(): ui.comboFIO.setCurrentText("")
if not ui.chkLServ.isChecked(): ui.comboServ.setCurrentText("")
if not ui.chkLW.isChecked(): ui.comboW.setCurrentText("")
if not ui.chkLAmount.isChecked(): ui.qleAmount.setValue(0)
ui.qleNote.setText("")
mdl: tsSqlTableModel = d.models["dep_has_main_by_day"]
qry = QSqlQuery()
qry.exec_(mdl.qry_text)
qry.next()
mdl.setQuery(qry)
#d.models["dep_has_main_by_day"].selectRow(rid)
d.models["dep_has_main_by_day"].selectRow(rid)
# d.models["user_has_serv"].select()
152
# while (d.models["dep_has_main_by_day"].canFetchMore()):
# d.models["dep_has_main_by_day"].fetchMore()
else:
if "Out of range value for column 'contracts_id' at row 1" in err:

\n\n") + err
QMessageBox.critical(self,

ret)
@Slot()
def on_btn_serv_bydayW_clicked(self):
self.pre_ins_main(self.ui.comboW)
@Slot()
def on_btn_serv_bydayE_clicked(self):
self.pre_ins_main(self.ui.comboServ)
@Slot()
def on_btn_serv_bydayA_clicked(self):
self.pre_ins_main(self.ui.qleAmount)
def show(self, *args, **kwargs):
debug("show window")
# d=self.data
# if d.password and d.user :
# return self.check_login()
if self.login_done:
return super().show(*args, **kwargs)
else:
return self.check_login()
return self.dlg.show()
# ql1=QtWidgets.QLineEdit(dlg)
# dlg.formLayout.setItem(3,dlg.formLayout.ItemRole.FieldRole,ql1)
# dlg.formLayout.addRow(ql1)
# dlg.user.setClearButtonEnabled(True)
# dlg.password.setClearButtonEnabled(True)
def set3usonData(self, data):
self.data = data
@Slot()
def check_login(self):
""" show main window (to call from login dialog)
"""
d = self.data
d.user = self.dlg.user.text()
d.password = self.dlg.password.text()
# self.dep=self.dlg.dep.text()
ui = self.ui
if self.dbconnect():
self.login_done = True
self.show()
else:
self.dlg.show()
status: QPlainTextEdit = self.dlg.status
status.appendPlainText(self.data.db.lastError().text().strip())
# status.appendPlainText()
153
@Slot()
def selectDep(self):
"""popup list to select Department
"""
ui = self.ui
# self.depmenu=QtWidgets.QMenu(self)
# qry=QSqlQuery()
# qry.exec_("select dep_id, depName from worker_has_dep")
# while qry.next():
# self.depmenu.addAction(QtWidgets.QAction(""))
#
# for qa in
# self.depmenu.addAction(QtWidgets.QAction())
class MyPopup(QWidget):
def __init__(self):
QWidget.__init__(self)
# cbox=QComboBox(self)
cbox = QtWidgets.QListView()
self.m = QSqlTableModel()
self.m.setTable("worker_has_dep")
self.m.select()
# sql = "select dep from dep_has_user"
cbox.setModel(self.m)
# self.x
qry = QSqlQuery()
qry.exec_("select dep from depOFuser")
if qry.record().count() == 0:
error("  !")
elif qry.record().count() == 1:
index = qry.record().indexOf('dep_id')
qry.first()
self.setDep(qry.value(index))
else:
pass
self.dlgSelDep = MyPopup()
self.dlgSelDep.show()
@Slot()
def setDep(self, idDep, depName):
"""
"""
ui = self.ui
@Slot()
def setYear(self, year: int):
"""
"""
ui = self.ui
def assignModel(self, table: QtWidgets.QTableView, model) -> bool:
""" Connect @model to @table
Args:
self, table, model
"""
154
#############################
# assign table
# ---------------------------
if isinstance(model, str):
model = self.data.models[model]
if not model:
return False
table.horizontalHeader().setDefaultAlignment(Qt.AlignLeft)
table.setModel(model)
table.setTextElideMode(Qt.ElideRight)
delg = myItemDelegate(model)
table.setItemDelegate(delg)
# table.show()
return True
def on_btn_upd_fio_list(self):
ui = self.ui
d = self.data
mdl = ui.table_dep_has_ufio.model()
resetModel(mdl)
def make_connections(self) -> NoReturn:
ui = self.ui
ui.qaDBconnect.triggered.connect(self.dbconnect)
ui.qaDBDisconnect.triggered.connect(self.dbDisconnect)
ui.action_curDep.triggered.connect(self.selectDep)
dlg = self.dlg
dlg.btnEnter.accepted.connect(self.check_login)
dlg.btnEnter.rejected.connect(self.closeEvent)
@Slot()
def dbconnect(self):
"""connect to DB"""
if not self.data.createDBConnection():
db = self.data.db
if db.lastError().text().strip():
error(db.lastError().text())
# QMessageBox.critical(self, "Database Error",
# db.lastError().text())
return False
self.ui.action_connected_user.setText(self.tr(": ") + self.data.user)
self.notifiesToUsers()
self.findTablesAndCreateModels()
return True
def findTablesAndCreateModels(self):
"""init tables"""
#############################
# init tables ui
# ---------------------------
ui = self.ui
tList = self.tableList
for obj in self.findChildren(QtWidgets.QTableView): # why QTableView didn't work
name = obj.objectName()
if "table_" in name:
tList[obj.objectName()] = obj
tablesRTModel = self.tablesRTModel
# logging.getLogger(__name__).setLevel(logging.INFO)
info("ui table widgets: %s", tList.keys())
155
debug(QtWidgets.QTableView)
for key, obj in tList.items():
tname = key[6:]
if self.data.addModel(tname):
res = self.assignModel(obj, tname)
if res:
tablesRTModel[key]: obj
# debug("auto assignModel %s %s", tname, res)
logging.getLogger(__name__).setLevel(logging.DEBUG)
debug(tablesRTModel)
@Slot(bool)
def dbDisconnect(self, val):
# TODO:
QSqlDatabase.close(QSqlDatabase())
def notifiesToUsers(self):
debug("notifiesToUsers")
for nf in self.data.getNotifies():
QMessageBox.information(self.parent(),
self.tr("  "), nf)
def closeEvent(self, event):
info("closeEvent")
self.data.saveConfig()
qset = self.qsettings
qset.setValue("mw/geometry", self.saveGeometry())
qset.setValue("mw/windowState", self.saveState())
return super().closeEvent(event)
def readQSetting(self):
#############################
# set Font of app from config
# ---------------------------
try:
qset = self.qsettings
qfont: QFont = self.font()
qfont.setPointSize(int(qset.value("font_size", 8)))
QtWidgets.QApplication.instance().setFont(qfont)
self.restoreGeometry(qset.value("mw/geometry"))
self.restoreState(qset.value("mw/windowState"))
qset.setValue("geometry", self.saveGeometry())
qset.setValue("windowState", self.saveState())
except:
warning("settings loading failed")
class TsonData(QObject):
"""Manage and store Data"""
def __init__(self):
"""Constructor for 3sonData"""
super().__init__()
debug("TsonData init")
self.user = None
self.password = None
self.dep = None
self.server = None
Источник: https://baza.diplomsite.ru/previewfile/2412