添加删除使用记录功能

This commit is contained in:
weiye.wang 2024-05-01 10:43:04 +08:00
parent cc84cbda56
commit 2f2a5eab46
6 changed files with 362 additions and 7 deletions

View File

@ -51,7 +51,7 @@ class Ui_MainWindow(object):
self.tab_weihu.setObjectName(u"tab_weihu")
self.tabWidget_weihu = QTabWidget(self.tab_weihu)
self.tabWidget_weihu.setObjectName(u"tabWidget_weihu")
self.tabWidget_weihu.setGeometry(QRect(0, 0, 800, 490))
self.tabWidget_weihu.setGeometry(QRect(0, 0, 760, 490))
sizePolicy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@ -65,6 +65,9 @@ class Ui_MainWindow(object):
self.tab_bjtm = QWidget()
self.tab_bjtm.setObjectName(u"tab_bjtm")
self.tabWidget_weihu.addTab(self.tab_bjtm, "")
self.tab_scjl = QWidget()
self.tab_scjl.setObjectName(u"tab_scjl")
self.tabWidget_weihu.addTab(self.tab_scjl, "")
self.tab_xxdr = QWidget()
self.tab_xxdr.setObjectName(u"tab_xxdr")
self.tabWidget_weihu.addTab(self.tab_xxdr, "")
@ -185,9 +188,9 @@ class Ui_MainWindow(object):
self.retranslateUi(MainWindow)
self.tabWidget_main.setCurrentIndex(5)
self.tabWidget_main.setCurrentIndex(1)
self.tabWidget_luru.setCurrentIndex(0)
self.tabWidget_weihu.setCurrentIndex(8)
self.tabWidget_weihu.setCurrentIndex(3)
self.tabWidget_shiyong.setCurrentIndex(2)
self.tabWidget_beikezu.setCurrentIndex(1)
self.tabWidget.setCurrentIndex(1)
@ -205,6 +208,7 @@ class Ui_MainWindow(object):
self.tabWidget_main.setTabText(self.tabWidget_main.indexOf(self.tab_luru), QCoreApplication.translate("MainWindow", u"\u5f55\u5165", None))
self.tabWidget_weihu.setTabText(self.tabWidget_weihu.indexOf(self.tab_tjzd), QCoreApplication.translate("MainWindow", u"\u6dfb\u52a0\u5b57\u6bb5\u6570\u636e", None))
self.tabWidget_weihu.setTabText(self.tabWidget_weihu.indexOf(self.tab_bjtm), QCoreApplication.translate("MainWindow", u"\u7f16\u8f91\u9898\u76ee", None))
self.tabWidget_weihu.setTabText(self.tabWidget_weihu.indexOf(self.tab_scjl), QCoreApplication.translate("MainWindow", u"\u5220\u9664\u4f7f\u7528\u8bb0\u5f55", None))
self.tabWidget_weihu.setTabText(self.tabWidget_weihu.indexOf(self.tab_xxdr), QCoreApplication.translate("MainWindow", u"\u5c0f\u95f2\u5bfc\u5165", None))
self.tabWidget_weihu.setTabText(self.tabWidget_weihu.indexOf(self.tab_sddr), QCoreApplication.translate("MainWindow", u"\u624b\u52a8\u5bfc\u5165", None))
self.tabWidget_weihu.setTabText(self.tabWidget_weihu.indexOf(self.tab_tkdr), QCoreApplication.translate("MainWindow", u"\u7edf\u8003\u5bfc\u5165", None))

View File

@ -0,0 +1,115 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file '删除使用记录.ui'
##
## Created by: Qt User Interface Compiler version 6.6.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
QMetaObject, QObject, QPoint, QRect,
QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QHBoxLayout, QLabel, QLineEdit,
QPlainTextEdit, QPushButton, QSizePolicy, QVBoxLayout,
QWidget)
class Ui_Form(object):
def setupUi(self, Form):
if not Form.objectName():
Form.setObjectName(u"Form")
Form.resize(760, 490)
self.horizontalLayoutWidget = QWidget(Form)
self.horizontalLayoutWidget.setObjectName(u"horizontalLayoutWidget")
self.horizontalLayoutWidget.setGeometry(QRect(100, 20, 461, 51))
self.horizontalLayout = QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout = QVBoxLayout()
self.verticalLayout.setObjectName(u"verticalLayout")
self.label_3 = QLabel(self.horizontalLayoutWidget)
self.label_3.setObjectName(u"label_3")
self.verticalLayout.addWidget(self.label_3)
self.lineEdit_id = QLineEdit(self.horizontalLayoutWidget)
self.lineEdit_id.setObjectName(u"lineEdit_id")
self.verticalLayout.addWidget(self.lineEdit_id)
self.horizontalLayout.addLayout(self.verticalLayout)
self.verticalLayout_2 = QVBoxLayout()
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
self.label = QLabel(self.horizontalLayoutWidget)
self.label.setObjectName(u"label")
self.verticalLayout_2.addWidget(self.label)
self.lineEdit_dateregex = QLineEdit(self.horizontalLayoutWidget)
self.lineEdit_dateregex.setObjectName(u"lineEdit_dateregex")
self.verticalLayout_2.addWidget(self.lineEdit_dateregex)
self.horizontalLayout.addLayout(self.verticalLayout_2)
self.verticalLayout_3 = QVBoxLayout()
self.verticalLayout_3.setObjectName(u"verticalLayout_3")
self.label_2 = QLabel(self.horizontalLayoutWidget)
self.label_2.setObjectName(u"label_2")
self.verticalLayout_3.addWidget(self.label_2)
self.lineEdit_classregex = QLineEdit(self.horizontalLayoutWidget)
self.lineEdit_classregex.setObjectName(u"lineEdit_classregex")
self.verticalLayout_3.addWidget(self.lineEdit_classregex)
self.horizontalLayout.addLayout(self.verticalLayout_3)
self.plainTextEdit_result = QPlainTextEdit(Form)
self.plainTextEdit_result.setObjectName(u"plainTextEdit_result")
self.plainTextEdit_result.setGeometry(QRect(100, 100, 461, 361))
self.plainTextEdit_result.setReadOnly(True)
self.label_4 = QLabel(Form)
self.label_4.setObjectName(u"label_4")
self.label_4.setGeometry(QRect(100, 80, 71, 16))
self.pushButton_find = QPushButton(Form)
self.pushButton_find.setObjectName(u"pushButton_find")
self.pushButton_find.setGeometry(QRect(580, 20, 75, 111))
self.pushButton_del = QPushButton(Form)
self.pushButton_del.setObjectName(u"pushButton_del")
self.pushButton_del.setGeometry(QRect(580, 140, 75, 131))
self.pushButton_commit = QPushButton(Form)
self.pushButton_commit.setObjectName(u"pushButton_commit")
self.pushButton_commit.setGeometry(QRect(580, 280, 75, 181))
font = QFont()
font.setBold(True)
self.pushButton_commit.setFont(font)
self.pushButton_commit.setStyleSheet(u"background-color: rgb(255, 255, 127);")
self.retranslateUi(Form)
QMetaObject.connectSlotsByName(Form)
# setupUi
def retranslateUi(self, Form):
Form.setWindowTitle(QCoreApplication.translate("Form", u"\u5220\u9664\u4f7f\u7528\u8bb0\u5f55", None))
self.label_3.setText(QCoreApplication.translate("Form", u"\u9898\u53f7", None))
self.label.setText(QCoreApplication.translate("Form", u"\u65e5\u671fregex", None))
self.label_2.setText(QCoreApplication.translate("Form", u"\u73ed\u7ea7regex", None))
self.label_4.setText(QCoreApplication.translate("Form", u"\u68c0\u7d22\u7ed3\u679c", None))
self.pushButton_find.setText(QCoreApplication.translate("Form", u"\u68c0\u7d22\u4fe1\u606f", None))
self.pushButton_del.setText(QCoreApplication.translate("Form", u"\u9884\u5220\u9664\u8bb0\u5f55", None))
self.pushButton_commit.setText(QCoreApplication.translate("Form", u"\u786e\u8ba4\u5220\u9664\n"
"(\u4e0d\u53ef\u9006)", None))
# retranslateUi

View File

@ -26,6 +26,7 @@ from 题目内容直接编辑 import MyWindow_bjtm
from 修改metadata import MyWindow_tjzd
from 基础知识编辑 import MyWindow_bjjc
from 修改目标内容 import MyWindow_xgmb
from 删除使用记录 import MyWindow_scjl
from database_tools_2 import *
class MyWindow(QMainWindow,Ui_MainWindow):
@ -142,6 +143,10 @@ class MyWindow(QMainWindow,Ui_MainWindow):
self.xgmb = MyWindow_xgmb(self.database)
self.layout_xgmb.addWidget(self.xgmb) #以上三行为初始化"修改目标文本"tab
self.layout_scjl = QVBoxLayout(self.tab_scjl)
self.scjl = MyWindow_scjl(self.database)
self.layout_scjl.addWidget(self.scjl) #以上三行为初始化"修改目标文本"tab
for func in [
@ -160,7 +165,8 @@ class MyWindow(QMainWindow,Ui_MainWindow):
self.tjzd.setdbname,
self.bjjc.setdbname,
self.wbzh.setdbname,
self.xgmb.setdbname
self.xgmb.setdbname,
self.scjl.setdbname
]: #在列表中的tab里传送数据库名的连接
self.sendDBname.connect(func)
def sendValue(self):

View File

@ -27,7 +27,7 @@
<enum>QTabWidget::Triangular</enum>
</property>
<property name="currentIndex">
<number>5</number>
<number>1</number>
</property>
<widget class="QWidget" name="tab_luru">
<attribute name="title">
@ -77,7 +77,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<width>760</width>
<height>490</height>
</rect>
</property>
@ -94,7 +94,7 @@
<enum>QTabWidget::Triangular</enum>
</property>
<property name="currentIndex">
<number>8</number>
<number>3</number>
</property>
<widget class="QWidget" name="tab_tjzd">
<attribute name="title">
@ -106,6 +106,11 @@
<string>编辑题目</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_scjl">
<attribute name="title">
<string>删除使用记录</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_xxdr">
<attribute name="title">
<string>小闲导入</string>

View File

@ -0,0 +1,78 @@
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;",(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;")
print(f"预删除前有 {self.mycursor.fetchall()[0][0]} 条使用记录.")
sql1 = "DELETE FROM usages 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)
val = (GetDate(),GetTime(),get_git_username(),"删除使用记录",self.id,f"{u}")
self.mycursor.execute(sql2,val)
self.mycursor.execute("SELECT count(*) FROM usages;")
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()

View File

@ -0,0 +1,147 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>760</width>
<height>490</height>
</rect>
</property>
<property name="windowTitle">
<string>删除使用记录</string>
</property>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>100</x>
<y>20</y>
<width>461</width>
<height>51</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>题号</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_id"/>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>日期regex</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_dateregex"/>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>班级regex</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_classregex"/>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_result">
<property name="geometry">
<rect>
<x>100</x>
<y>100</y>
<width>461</width>
<height>361</height>
</rect>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>100</x>
<y>80</y>
<width>71</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>检索结果</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_find">
<property name="geometry">
<rect>
<x>580</x>
<y>20</y>
<width>75</width>
<height>111</height>
</rect>
</property>
<property name="text">
<string>检索信息</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_del">
<property name="geometry">
<rect>
<x>580</x>
<y>140</y>
<width>75</width>
<height>131</height>
</rect>
</property>
<property name="text">
<string>预删除记录</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_commit">
<property name="geometry">
<rect>
<x>580</x>
<y>280</y>
<width>75</width>
<height>181</height>
</rect>
</property>
<property name="font">
<font>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 127);</string>
</property>
<property name="text">
<string>确认删除
(不可逆)</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>