批量收录新题时有重复题目将回滚数据库并在终端显示信息

This commit is contained in:
weiye.wang 2024-05-26 23:57:22 +08:00
parent ab8e53dce2
commit 5036014113
2 changed files with 15 additions and 2 deletions

View File

@ -542,6 +542,7 @@ def AddRelatedProblemToDB(id,content,oid,editor,database):
def AddProblemstoDict2024nocommit(startingid,raworigin,problems,editor,indexed,cursor): #将来自GenerateProblemListFromString的列表中的题目添加到thedict字典, 返回题号列表(包括用老题号替代的题目)
mycursor = cursor
idlist = []
problemlist = []
id = int(startingid)
currentsuffix = problems[0][1]
problemindex = 0
@ -549,6 +550,7 @@ def AddProblemstoDict2024nocommit(startingid,raworigin,problems,editor,indexed,c
try:
p, suffix, meta = p_and_suffix_and_meta
p = re.sub(r"\n\s+","\n",p)
problemlist.append(p)
pid = str(id).zfill(6)
if suffix == currentsuffix:
problemindex += 1
@ -610,7 +612,7 @@ def AddProblemstoDict2024nocommit(startingid,raworigin,problems,editor,indexed,c
print(f"错误的题目: {p_and_suffix_and_meta}")
idlist = []
break
return idlist
return (idlist,problemlist)
def CreateIDLinks(old_id_list,new_id_list): #建立已有id和新id之间的联系, thedict为可选, 选中的话即为当前字典, 会从new_id_list中排除当前字典中有的项
if len(old_id_list)>len(new_id_list):

View File

@ -21,6 +21,7 @@ class MyWindow_bdsl(QWidget,Ui_Form):
self.pushButton_step2.clicked.connect(self.execstep2)
self.pushButton_commit.clicked.connect(self.commitchange)
self.plainTextEdit_compared.textChanged.connect(self.commitdisable)
self.problemstoimport = []
def togglesuffix(self):
self.suffix_checked = self.checkBox_suffix.isChecked()
if self.suffix_checked:
@ -99,7 +100,15 @@ class MyWindow_bdsl(QWidget,Ui_Form):
self.db = connect(hostname = db_host, port= db_port, username= db_user, pwd = db_pwd, db= self.database_name)
self.cursor = self.db.cursor()
rolled_back = False
idlist = AddProblemstoDict2024nocommit(nextspareid,raworigin,problems,editor,Indexed,self.cursor)
idlist,newproblemlist = AddProblemstoDict2024nocommit(nextspareid,raworigin,problems,editor,Indexed,self.cursor)
for p in newproblemlist:
if p in self.problemstoimport:
print("有重复导入的题目, 改变已回滚!!!\n"*5)
self.db.rollback()
rolled_back = True
break
else:
self.problemstoimport.append(p)
if idlist == []:
print("有错误, 改变已回滚.")
self.db.rollback()
@ -108,6 +117,8 @@ class MyWindow_bdsl(QWidget,Ui_Form):
AppendTextFile(f"{GetDate()}-{GetTime()}\n{generate_exp(idlist)}",idlistpath)
os.system(f"code {idlistpath}")
self.pushButton_commit.setEnabled(True)
else:
self.pushButton_commit.setDisabled(True)
def commitdisable(self):
self.pushButton_commit.setDisabled(True)