from Utils.ObjUtil import SpecObject from Utils.ValidateUtil import ValidateAttr, Validate class QuestionObj(SpecObject): """问题""" class Options(SpecObject): """题目选项""" percentage = ValidateAttr(field="percentage", type=[int, float]) correct = ValidateAttr(field="correct", type=int, in_list=[0, 1]) describe = ValidateAttr(field="describe", type=str) fields_map = { "percentage": "得分比", "correct": "正确", "describe": "描述" } class DecisionSetting(SpecObject): """判定设置""" interval = ValidateAttr(field="interval", type=str) contain = ValidateAttr(field="contain", type=list) score = ValidateAttr(field="score", type=list) answer = ValidateAttr(field="answer", type=str) assigned = ValidateAttr(field="assigned", type=str) fields_map = { "interval": "区间", "contain": "包含", "score": "得分比", "answer": "正确答案", "assigned": "指定处理" } class InputSetting(SpecObject): """输入设置""" input = ValidateAttr(field="input", type=[str, int, float]) type = ValidateAttr(field="type", type=str) mark = ValidateAttr(field="mark", type=str) fields_map = { "input": "输入", "type": "类型", "mark": "备注" } question_id = ValidateAttr(field="question_id", type=str) question_name = ValidateAttr(field="question_name", type=str) question_type = ValidateAttr(field="question_type", type=str, in_list=['单选题-多解', '多选题-多解', '单选题-单解', '多选题-单解', '填空题-单解', '填空题-包含多解', '填空题-档位多解', '填空题-指定处理', '自定义问题']) describe = ValidateAttr(field="describe", type=str) options = ValidateAttr(field="options", instance_list=Options) decision_setting = ValidateAttr(field="decision_setting", type=DecisionSetting) input_setting = ValidateAttr(field="input_setting", instance_list=InputSetting) author = ValidateAttr(field="author", type=str) date = ValidateAttr(field="date", func=Validate.date_format) tags = ValidateAttr(field="tags", type=list) fields_map = { "question_id": "问题ID", "question_name": "问题名称", "question_type": "问题类型", "describe": "题目描述", "options": "题目选项", "decision_setting": "判定设置", "input_setting": "输入设置", "author": "作者", "date": "日期", "tags": "标签" }