Exemplo n.º 1
0
 def getproblemwithanswerbyid(token, problemid, req):
     """
     获取题目带答案
     """
     if checkalltoken(token, req):
         print(problemid)
         tnb = gdb.session.query(Settings).filter(
             Settings.settings_key == "togglenotebook"
         ).first()
         if tnb.settings_value == "0":
             return packinfo(infostatus=3, infomsg="管理员已关闭错题本功能!")
         temp = gdb.session.query(Problem).filter(
             Problem.problem_id == problemid
         ).first()
         us = gdb.session.query(User).filter(
             User.user_token == token
         ).first()
         if temp:
             tempdict = temp.todict()
             answers = list(tempdict["problem_answer"])
             answers.sort()
             answers = "".join(answers)
             tempdict["problem_answer"] = answers
             tempscore = gdb.session.query(Score).filter(
                 Score.user_id == us.user_id).order_by(Score.score_id.desc()).first()
             if len(tempscore.score_timeend.strip()) == 0:
                 return packinfo(infostatus=-1, infomsg="答题中,无法查看错题!")
             return packinfo(infostatus=1, inforesult=tempdict)
         else:
             return packinfo(infostatus=0, infomsg="没有该题目!")
     else:
         return packinfo(infostatus=2, infomsg="没有权限!")
Exemplo n.º 2
0
 def getranklistbypsetid(token, psetid, req):
     """
     根据题库编号,查询排名
     """
     if checkalltoken(token, req):
         scorelist = ProblemsetDAO.getscorelistbypsetid(psetid)
         return packinfo(infostatus=1, infomsg="查询成功!", inforesult=scorelist)
     else:
         return packinfo(infostatus=2, infomsg="没有权限!")
Exemplo n.º 3
0
 def checkexist(token, problemsetname, req):
     """
     检查题库是否存在
     """
     if checkalltoken(token, req):
         temp = gdb.session.query(ProblemSet).filter(
             ProblemSet.problemset_title == problemsetname).first()
         if temp:
             return packinfo(infostatus=1, infomsg="题库已存在!")
         else:
             return packinfo(infostatus=0, infomsg="没有此题库!")
     else:
         return packinfo(infostatus=2, infomsg="没有权限!")
Exemplo n.º 4
0
 def getproblemsets(token, req):
     """
     返回所有题库
     """
     if checkalltoken(token, req):
         try:
             problemsets = gdb.session.query(ProblemSet).all()
         except Exception as e:
             return packinfo(infostatus=0, infomsg="数据库错误!")
         else:
             problemlist = [x.todict() for x in problemsets]
             return packinfo(infostatus=1, inforesult=problemlist)
     else:
         return packinfo(infostatus=2, infomsg="没有权限!")
Exemplo n.º 5
0
 def getpsetidbypsetname(token, psetname, req):
     """
     根据题库名称,查题库编号
     """
     if checkalltoken(token, req):
         pset = gdb.session.query(ProblemSet).filter(
             ProblemSet.problemset_title == psetname
         ).first()
         if pset:
             return packinfo(infostatus=1, infomsg="查询成功!", inforesult=pset.problemset_id)
         else:
             return packinfo(infostatus=3, infomsg="没有此题库!")
     else:
         return packinfo(infostatus=2, infomsg="没有权限!")
Exemplo n.º 6
0
 def getsummarywithanswerbyid(token, problemid, req):
     """
     获取易错题带答案
     """
     if checkalltoken(token, req):
         print(problemid)
         temp = gdb.session.query(Problem).filter(
             Problem.problem_id == problemid
         ).first()
         if temp:
             tempdict = temp.todict()
             answers = list(tempdict["problem_answer"])
             answers.sort()
             answers = "".join(answers)
             tempdict["problem_answer"] = answers
             return packinfo(infostatus=1, inforesult=tempdict)
         else:
             return packinfo(infostatus=0, infomsg="没有该题目!")
     else:
         return packinfo(infostatus=2, infomsg="没有权限!")
Exemplo n.º 7
0
 def copyproblemset(token, psettitle, newsettitle, req):
     """
     复制题库,可用于组织考试时清空积分
     """
     if checkalltoken(token, req):
         pset = gdb.session.query(ProblemSet).filter(
             ProblemSet.problemset_title == psettitle
         ).first()
         if pset:
             npset = ProblemSet(newsettitle, pset.problemset_desp, pset.problemset_count, pset.problemset_token,
                                pset.problemset_answercount, pset.problemset_timeperproblem)
             try:
                 gdb.session.add(npset)
                 gdb.session.commit()
             except Exception as e:
                 return packinfo(infostatus=4, infomsg="数据库错误!")
             else:
                 newid = gdb.session.query(ProblemSet).filter(
                     ProblemSet.problemset_title == newsettitle
                 ).first().problemset_id
                 plist = gdb.session.query(Problem).filter(
                     Problem.problemset_id == pset.problemset_id
                 ).all()
                 for p in plist:
                     np = Problem(newid, p.problem_desp, p.problem_picpath, p.problem_choiceA, p.problem_choiceB,
                                  p.problem_choiceC, p.problem_choiceD, p.problem_answer)
                     gdb.session.add(np)
                 try:
                     gdb.session.commit()
                 except Exception as e:
                     return packinfo(infostatus=5, infomsg="数据库错误!")
                 else:
                     return packinfo(infostatus=1, infomsg="复制成功!")
         else:
             return packinfo(infostatus=3, infomsg="没有此题库!")
     else:
         return packinfo(infostatus=2, infomsg="没有权限!")