from flask import Blueprint, request from Modules.Questions.QuestionsImpl import QuestionImpl from Modules.Questions.QuestionsUtils import QuestionUtils from Utils.ErrorUtil import APIReturnError from Utils.RouteUtil import RouteParamsCheck question_route = Blueprint('question', __name__) @question_route.route('/new_question', methods=['POST']) def new_question_route(): """新建问题""" try: RouteParamsCheck(req=request.json, params=[ "question_name", "question_type", "describe", "author", "tags" ]).required() data = request.json impl = QuestionImpl() result = impl.new_question(data=data) return {"info": "新建问题", "result": result}, 200 except APIReturnError as e: return {"info": e.__str__()}, e.status_code @question_route.route('/check_question', methods=['POST']) def check_question_route(): """校验问题""" try: RouteParamsCheck(req=request.json, params=["question_name", "question_type", "question_answer"]).required() data = request.json impl = QuestionImpl() result = impl.check_question(data=data) return {"info": "校验问题", "result": result}, 200 except APIReturnError as e: return {"info": e.__str__()}, e.status_code @question_route.route('/search_question', methods=['POST']) def search_question_route(): """查询问题""" try: RouteParamsCheck(req=request.json, params=["question_name", "question_type", "author", "tags", "sort", "page_no", "page_size"]).required() data = request.json impl = QuestionImpl() result = impl.search_question(data=data) return {"info": "查询问题", "result": result}, 200 except APIReturnError as e: return {"info": e.__str__()}, e.status_code @question_route.route('/operate_question', methods=['GET', 'POST']) def operate_question_route(): """查看/编辑问题""" try: if request.method == 'GET': RouteParamsCheck(request.args, ["qid"]).required() qid = request.args["qid"] impl = QuestionImpl() result = impl.view_question(qid=qid) return {"info": "查看问题", "result": result}, 200 if request.method == 'POST': RouteParamsCheck(request.json, ["question_id", "question_name", "describe", "tags"]).required() data = request.json impl = QuestionImpl() result = impl.edit_question(data=data) return {"info": "编辑问题", "result": result}, 200 except APIReturnError as e: return {"info": e.__str__()}, e.status_code @question_route.route('/delete_question', methods=['GET']) def delete_question_route(): """删除问题""" try: RouteParamsCheck(request.args, ["qid"]).required() qid = request.args["qid"] impl = QuestionImpl() result = impl.delete_question(qid=qid) return {"info": "删除问题", "result": result}, 200 except APIReturnError as e: return {"info": e.__str__()}, e.status_code