From df227eedb7b6734b03f3a38588271c6bfe89e619 Mon Sep 17 00:00:00 2001 From: "weiye.wang" Date: Thu, 25 Apr 2024 23:39:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=81=E7=A7=BB=20=E4=BF=AE=E6=94=B9metadata?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 工具v4/Ui_修改metadata.py | 41 +++++++++++++++++++++++++ 工具v4/tool_panel.py | 8 ++++- 工具v4/修改metadata.py | 63 +++++++++++++++++++++++++++++++++++++++ 工具v4/修改metadata.ui | 37 +++++++++++++++++++++++ 4 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 工具v4/Ui_修改metadata.py create mode 100644 工具v4/修改metadata.py create mode 100644 工具v4/修改metadata.ui diff --git a/工具v4/Ui_修改metadata.py b/工具v4/Ui_修改metadata.py new file mode 100644 index 00000000..024ee78e --- /dev/null +++ b/工具v4/Ui_修改metadata.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file '修改metadata.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, QPushButton, QSizePolicy, QWidget) + +class Ui_Form(object): + def setupUi(self, Form): + if not Form.objectName(): + Form.setObjectName(u"Form") + Form.resize(760, 490) + self.pushButton_exec = QPushButton(Form) + self.pushButton_exec.setObjectName(u"pushButton_exec") + self.pushButton_exec.setGeometry(QRect(220, 190, 321, 101)) + font = QFont() + font.setBold(True) + self.pushButton_exec.setFont(font) + + self.retranslateUi(Form) + + QMetaObject.connectSlotsByName(Form) + # setupUi + + def retranslateUi(self, Form): + Form.setWindowTitle(QCoreApplication.translate("Form", u"\u4fee\u6539metadata", None)) + self.pushButton_exec.setText(QCoreApplication.translate("Form", u"\u4fee\u6539metadata", None)) + # retranslateUi + diff --git a/工具v4/tool_panel.py b/工具v4/tool_panel.py index 62c189f1..8a2a1353 100644 --- a/工具v4/tool_panel.py +++ b/工具v4/tool_panel.py @@ -23,6 +23,7 @@ from 统考数据导入 import MyWindow_tkdr from 手动统计结果导入 import MyWindow_sddr from 获取小闲平台使用数据 import MyWindow_xxdr from 题目内容直接编辑 import MyWindow_bjtm +from 修改metadata import MyWindow_tjzd from database_tools_2 import * class MyWindow(QMainWindow,Ui_MainWindow): @@ -50,6 +51,10 @@ class MyWindow(QMainWindow,Ui_MainWindow): self.tjgl = MyWindow_tjgl(self.database) self.layout_tjgl.addWidget(self.tjgl) #以上三行为初始化“添加关联”tab + self.layout_tjzd = QVBoxLayout(self.tab_tjzd) + self.tjzd = MyWindow_tjzd(self.database) + self.layout_tjzd.addWidget(self.tjzd) #以上三行为初始化“编辑题目”tab + self.layout_bjtm = QVBoxLayout(self.tab_bjtm) self.bjtm = MyWindow_bjtm(self.database) self.layout_bjtm.addWidget(self.bjtm) #以上三行为初始化“编辑题目”tab @@ -141,7 +146,8 @@ class MyWindow(QMainWindow,Ui_MainWindow): self.tjjc.setdbname, self.gxsy.setdbname, self.dygg.setdbname, - self.bjtm.setdbname + self.bjtm.setdbname, + self.tjzd.setdbname ]: #在列表中的tab里传送数据库名的连接 self.sendDBname.connect(func) def sendValue(self): diff --git a/工具v4/修改metadata.py b/工具v4/修改metadata.py new file mode 100644 index 00000000..5622a89c --- /dev/null +++ b/工具v4/修改metadata.py @@ -0,0 +1,63 @@ +from PySide6.QtWidgets import QWidget, QApplication, QFileDialog +from Ui_修改metadata import Ui_Form +import os +from database_tools_2 import * + + +class MyWindow_tjzd(QWidget,Ui_Form): + def __init__(self,database_name): + super().__init__() + self.database_name = database_name + self.setupUi(self) + self.bind() + + def setdbname(self,string): + self.database_name = string + # print(self.database_name) + + + def bind(self): + self.metadatafilepath = "文本文件/metadata.txt" + self.pushButton_exec.clicked.connect(self.exec) + + def exec(self): + mydb = connect(hostname = db_host, port = db_port, username=db_user, pwd=db_pwd, db = self.database_name) + + + changedids = ImportMetadata(mydb,self.metadatafilepath) + print(changedids) + + if len(changedids) > 0: + mycursor = mydb.cursor() + configjson = BuildFullScheme + latexbody = "\\begin{enumerate}\n\n" + for id in sorted(list(set(changedids))): + latexbody += generateLaTeXBodyContentfromMariaDB(mycursor,id,configjson) + "\n\n" + latexbody += "\\end{enumerate}" + latex_raw = ReadTextFile("模板文件/讲义模板.txt") + if configjson["教师版"] == True: + latex_raw = latex_raw.replace(r"学号\blank{50} \ 姓名\blank{80}","上海市控江中学") + + if sys.platform != "win32": #非win系统用默认字体 + latex_raw = re.sub(r"fontset[\s]*=[\s]*none","fontset = fandol",latex_raw) + latex_raw = re.sub(r"\\setCJKmainfont",r"% \\setCJKmainfont",latex_raw) + latex_data = StringSubstitute(r"<<[\s\S]*?待替换[\s\S]*?>>",latex_raw,("试编译",latexbody)) #替换标题和bodystring + outputdir = os.path.join(os.getcwd(),"临时文件") + outputfilepath = os.path.join(outputdir,"试编译.tex") + SaveTextFile(latex_data,outputfilepath) + if XeLaTeXCompile(outputdir,"试编译.tex",times=1): + print("修改后检验成功, 已导入数据库.") + mydb.commit() + else: + print("修改后检验失败, 已回滚.") + mydb.rollback() + else: + print("未作修改.") + + + + + mydb.commit() + mydb.close() + + diff --git a/工具v4/修改metadata.ui b/工具v4/修改metadata.ui new file mode 100644 index 00000000..971a212d --- /dev/null +++ b/工具v4/修改metadata.ui @@ -0,0 +1,37 @@ + + + Form + + + + 0 + 0 + 760 + 490 + + + + 修改metadata + + + + + 220 + 190 + 321 + 101 + + + + + true + + + + 修改metadata + + + + + +