def delete_question(self): """后台管理员删除问题""" if not is_admin(): raise AuthorityError('权限不足') admin = Admin.query.filter_by_(ADid=request.user.id).first_('权限已被回收') data = parameter_required(('qulist',)) qulist = data.get('qulist') for quid in qulist: qu = Quest.query.filter_by_(QUid=quid).first() if not qu: continue qu.isdelete = True qalist = Answer.query.filter_by_(QUid=qu.QUid).all() for qa in qalist: qa.isdelete = True qan = QuestAnswerNote.create({ 'QANid': str(uuid.uuid1()), 'QANcontent': '删除问题', 'QANcreateid': admin.ADid, 'QANtargetId': quid, 'QANtype': QuestAnswerNoteType.qu.value, }) db.session.add(qan) return Success('删除完成')
def __update_questoutline(self, data, qo_model, qotype, qo_filter=None): """ 修改问题分类 :param data: request的data :param qo_model: 通过id筛选的问题分类 :param qo_filter: 通过名称筛选的问题分类 :return: 出现分类名重复会报错,否则静默处理 """ qanaction = "" if data.get('qoicon') and qo_model.QOicon != data.get('qoicon'): qanaction += '修改icon为 {0}'.format(data.get('qoicon')) qo_model.QOicon = data.get('qoicon') if data.get('qoname') and qo_model.QOname != data.get('qoname'): if qo_filter: raise ParamsError('问题分类名不能与已有分类名相同') qanaction += '修改name为 {0}'.format(data.get('qoname')) qo_model.QOname = data.get('qoname') if qotype != int(qo_model.QOtype): qanaction += '修改类型为{0}'.format(qotype) qo_model.QOtype = qotype if qanaction: qan_instance = QuestAnswerNote.create({ 'QANid': str(uuid.uuid1()), 'QANcontent': qanaction, 'QANtargetId': qo_model.QOid, 'QANtype': QuestAnswerNoteType.qo.value, 'QANcreateid': request.user.id, }) db.session.add(qan_instance)
def __update_quest(self, data, qu_model, qu_filter=None): """ 修改问题分类 :param data: request的data :param qu_model: 通过id筛选的问题分类 :param qu_filter: 通过名称筛选的问题分类 :return: 出现分类名重复会报错,否则静默处理 """ if data.get('quest') and qu_model.QUquest != data.get('quest'): if qu_filter: raise ParamsError('问题分类名不能与已有分类名相同') qu_model.QUquest = data.get('quest') qan_instance = QuestAnswerNote.create({ 'QANid': str(uuid.uuid1()), 'QANcontent': '修改quest 为 {0}'.format(data.get('quest')), 'QANcreateid': request.user.id, 'QANtargetId': qu_model.QUid, 'QANtype': QuestAnswerNoteType.qu.value }) db.session.add(qan_instance)
def delete_questoutline(self): """后台管理员删除问题分类""" if not is_admin(): raise AuthorityError('权限不足') admin = Admin.query.filter_by_(ADid=request.user.id).first_('权限已被回收') data = parameter_required(('qolist', )) qolist = data.get('qolist') for qoid in qolist: qomodel = QuestOutline.query.filter_by_(QOid=qoid).first() if not qomodel: continue qomodel.isdelete = True qulist = Quest.query.filter_by_(QOid=qoid).all() for qu in qulist: qu.isdelete = True qalist = Answer.query.filter_by_(QUid=qu.QUid).all() for qa in qalist: qa.isdelete = True qan = QuestAnswerNote.create({ 'QANid': str(uuid.uuid1()), 'QANcontent': '删除问题分类', 'QANcreateid': admin.ADid, 'QANtargetId': qoid }) db.session.add(qan) BASEADMIN().create_action(AdminActionS.delete.value, 'QuestAnswerNote', str(uuid.uuid1())) return Success('删除完成')
def __update_answer(self, answer, qa_model): """回答修改,不做对比""" if not answer: return answer_model = Answer.query.filter_(Answer.QUid == qa_model.QUid, Answer.isdelete == False).first() if not answer_model: db.session.add( Answer.create({ 'QAid': str(uuid.uuid1()), 'QUid': qa_model.QUid, 'QAcontent': answer, 'QAcreateId': request.user.id })) else: qan_instance = QuestAnswerNote.create({ 'QANid': str(uuid.uuid1()), 'QANcontent': '修改answer 为 {0}'.format(answer), 'QANcreateid': request.user.id, 'QANtargetId': answer_model.QAid, 'QANtype': QuestAnswerNoteType.qa.value }) answer_model.QAcontent = answer db.session.add(qan_instance)