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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
81
#############################
# init members
# ---------------------------
self.db: QSqlDatabase = None
self.notifies = []
#############################
# main models storage
# ---------------------------
self.models = {}
# self.init_main_model()
#############################
# some vars
# ---------------------------
self.si = self.servIns(self)
class servIns(QObject):
"""data and functions related to tab insert
into main """
def __init__(self, parent):
"""Constructor for servIns"""
super().__init__(parent)
self.dbeg = None
self.dend = None
self.model_dep_has_main_by_day = None
self.model_dep_has_main_by_day_by_worker = None
self.model_dep_has_main_by_day_by_you = None
self.model_dep_has_main_by_day_by_serv = None
@staticmethod
def insert_main_table(*arg):
"""insert into main (contracts_id,
dep_id, ufio_id, serv_id,
vdate, uslnum, worker_id, note)"""
qry = QSqlQuery()
qry.prepare("""insert into main (contracts_id,
82
dep_id, ufio_id, serv_id,
vdate, uslnum, worker_id, note)
VALUES(?, ?, ?, ?, ?, ?, ?, ?)""")
for val in arg:
qry.addBindValue(val)
ret = qry.exec_()
rid=TsonData.line_query("SELECT LAST_INSERT_ID()")
return (ret, rid, qry.lastError().text().strip())
@staticmethod
def line_query(qry_str, val=0):
qry = QSqlQuery()
qry.exec_(qry_str)
qry.next()
return qry.value(val)
def init_main_model(self):
#############################
# create model
# ---------------------------
sqlTable = "servOFdep"
self.addModel(sqlTable)
def createDBConnection(self):
db = QSqlDatabase.addDatabase('QODBC3')
self.db = db
debug(QSqlDatabase.drivers())
user = self.user
if not self.server:
self.server = "127.0.0.1"
if not self.port:
self.port = "3306"
bdstr = "Driver={MySQL ODBC 8.0 Unicode Driver};" \
"SERVER=%s;DATABASE=kcson;UID=%s;PORT=%s" %
(self.server, user, self.port)
db.setDatabaseName(bdstr)
83
debug(bdstr)
db.setUserName(user)
info(user)
db.setPassword(self.password)
res = db.open()
debug(res)
self.dep = self.line_query("select GET_DEP(GET_wID())
as res", 0)
self.createUnAssignedModels()
return res
def createUnAssignedModels(self):
self.addModel("serv")
self.addModel("dep")
self.addModel("ufio")
self.addModel("serv")
self.addModel("serv_activ")
def closeDBConnection(self):
if self.db:
self.db.close()
self.db = None
def getNotifies(self) -> [str, ]:
"""
"""
try:
if self.db:
qry = QSqlQuery()
qry.exec_("SELECT msg from notifies
WHERE archive=0")
index = qry.record().indexOf('msg')
while qry.next():
yield qry.value(index)
else:
return None
84
except:
return None
def addModel(self, modelName: str = None,
sql: str = None, sqlTable: str = None,
where: str = None) -> QSqlTableModel:
""" Create @model from @sql
Args:
self, modelName=None, sql=None,
sqlTable=None, where=None
Returns:
model or False
"""
if not (sql or sqlTable):
sqlTable = modelName
if not sql:
if sqlTable not in self.db.tables(QSql.AllTables):
return False
if not modelName: modelName = sqlTable
if not modelName: return False
debug("addModel %s to %s", modelName, sqlTable)
#############################
# create model
# ---------------------------
model = tsSqlTableModel(None, self.db)
try:
if sqlTable:
model.setTable(sqlTable)
if where:
model.setFilter(where)
elif sql:
qry = QSqlQuery()
qry.exec_(sql)
qry.next()
85
model.qry_text = sql
model.setQuery(qry)
model.setEditStrategy(
QSqlTableModel.OnManualSubmit)
model.select()
except:
warning("addModel bad sql %s",
(modelName, sql, sqlTable))
return False
#############################
# replace sql column names
# ---------------------------
for i in range(0, model.columnCount()):
label = model.headerData(i, Qt.Horizontal)
if label in self._sql_column_replace.keys():
label = self._sql_column_replace[label]
model.setHeaderData(i, Qt.Horizontal, label)
#############################
# add model to dict
# ---------------------------
self.models[modelName] = model
return model
def convColName(self, colName: str) -> str:
"""
Args:
original SQL column Name
Returns:
new column Name
"""
try:
if self._sql_column_replace[colName]:
return self._sql_column_replace[colName]
except:
return colName
Источник: https://baza.diplomsite.ru/previewfile/2412