79 lines
3.3 KiB
Python
79 lines
3.3 KiB
Python
from PySide6.QtWidgets import QWidget, QApplication, QFileDialog
|
|
from Ui_删除使用记录 import Ui_Form
|
|
from database_tools_2 import *
|
|
|
|
class MyWindow_scjl(QWidget,Ui_Form):
|
|
def __init__(self,database_name):
|
|
super().__init__()
|
|
self.database_name = database_name
|
|
self.current_database_name = database_name
|
|
self.setupUi(self)
|
|
self.bind()
|
|
def setdbname(self,string):
|
|
self.database_name = string
|
|
self.pushButton_del.setDisabled(True)
|
|
self.pushButton_commit.setDisabled(True)
|
|
try:
|
|
self.db.close()
|
|
except:
|
|
pass
|
|
self.db = connect(hostname=db_host, port=db_port, username= db_user, pwd= db_pwd, db=self.database_name)
|
|
# print(self.database_name)
|
|
def bind(self):
|
|
self.pushButton_del.setDisabled(True)
|
|
self.pushButton_commit.setDisabled(True)
|
|
self.pushButton_find.clicked.connect(self.find)
|
|
self.pushButton_del.clicked.connect(self.delete)
|
|
self.pushButton_commit.clicked.connect(self.commit)
|
|
self.db = connect(hostname=db_host, port=db_port, username= db_user, pwd= db_pwd, db=self.database_name)
|
|
def find(self):
|
|
self.mycursor = self.db.cursor()
|
|
self.id = self.lineEdit_id.text().strip().zfill(6)
|
|
self.dateregex = self.lineEdit_dateregex.text().strip()
|
|
self.classregex = self.lineEdit_classregex.text().strip()
|
|
self.mycursor.execute("SELECT * FROM usages WHERE ID = %s AND not obsolete;",(self.id,))
|
|
ret_list = self.mycursor.fetchall()
|
|
self.usage_list = []
|
|
for ret in ret_list:
|
|
if re.findall(self.dateregex,ret[1]) != [] and re.findall(self.classregex,ret[2]) != []:
|
|
self.usage_list.append(ret)
|
|
output = f"已找到 {len(self.usage_list)} 个使用记录:\n\n具体如下:\n"
|
|
for u in self.usage_list:
|
|
output += (f"题号: {u[0]}, 日期: {u[1]}, 班级: {u[2]}, 难度: {u[3]}\n")
|
|
self.plainTextEdit_result.setPlainText(output)
|
|
if len(self.usage_list) >= 1:
|
|
self.pushButton_del.setEnabled(True)
|
|
else:
|
|
self.pushButton_del.setEnabled(False)
|
|
def delete(self):
|
|
self.mycursor = self.db.cursor()
|
|
self.mycursor.execute("SELECT count(*) FROM usages WHERE not obsolete;")
|
|
print(f"预删除前有 {self.mycursor.fetchall()[0][0]} 条使用记录.")
|
|
sql1 = "UPDATE usages SET obsolete = TRUE WHERE ID = %s AND date = %s AND classname = %s AND diff = %s;"
|
|
sql2 = "INSERT INTO logs (DATE,TIME,username,action,id,db_content) VALUE (%s,%s,%s,%s,%s,%s);"
|
|
for u in tqdm.tqdm(self.usage_list,desc = "删除使用记录"):
|
|
self.mycursor.execute(sql1,u[:4])
|
|
val = (GetDate(),GetTime(),get_git_username(),"删除使用记录",self.id,f"{u}")
|
|
self.mycursor.execute(sql2,val)
|
|
self.mycursor.execute("SELECT count(*) FROM usages WHERE not obsolete;")
|
|
print(f"删除后将有 {self.mycursor.fetchall()[0][0]} 条使用记录.")
|
|
self.pushButton_commit.setEnabled(True)
|
|
def commit(self):
|
|
self.db.commit()
|
|
self.pushButton_del.setDisabled(True)
|
|
self.pushButton_commit.setDisabled(True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app = QApplication([])
|
|
windows = MyWindow_scjl("tikutest")
|
|
windows.show()
|
|
app.exec()
|
|
|