def fromXmlQuestion(root,section,msg): text = findField('text',root,msg) required = (findField('required',root,msg) =="True") #CHOICES = findField('sequence',root,msg) l=[] for choice in root.findall('choice'): l.append(choice.text) expectedAnswer = findField('expectedAnswer',root,msg) maxNumberAttempt = findField('maxNumberAttempt',root,msg) type = findField('type',root,msg) if type == 'yn': question = QuestionYN() elif type == 'text': isNumber = (findField('isNumber',root,msg)=="True") regularExpression = findField('regularExpression',root,msg) errorMessage = findField('errorMessage',root,msg) question = QuestionText(isNumber=isNumber, regularExpression=regularExpression, errorMessage=errorMessage) elif type == 'choice': question = QuestionChoice() elif type == 'likertScale': minLikert = findField('minLikert',root,msg) maxLikert = findField('maxLikert',root,msg) labelMin = findField('labelMin',root,msg) labelMax = findField('labelMax',root,msg) question = QuestionLikertScale(minLikert=minLikert, maxLikert=maxLikert, labelMin=labelMin, labelMax=labelMax) elif type == 'partTwo': question = QuestionPartTwo() elif type == 'decisionOne': question = QuestionDecisionOne() elif type == 'decisionTwo': question = QuestionDecisionTwo() elif type == 'decisionThree': question = QuestionDecisionThree() elif type == 'decisionFour': question = QuestionDecisionFour() elif type == 'decisionFive': question = QuestionDecisionFive() elif type == 'decisionSix': question = QuestionDecisionSix() else: print "MIERDA, typo:", type print "mierta texto: ", text return False question.text = text question.required = required question.expectedAnswer = expectedAnswer question.maxNumberAttempt = maxNumberAttempt question.choices = l question.section = section question.registerTime = False db.session.add(question)
def selectType(form,section): '''Function that read the form and generates the object the type Question ''' if form.questionType.data =='yn': question = QuestionYN() if form.questionType.data == 'text': question = QuestionText(isNumber=form.isNumber.data, isNumberFloat=form.isNumberFloat.data, regularExpression=form.regularExpression.data, errorMessage=form.errorMessage.data) if form.questionType.data == 'choice': if form.range_min.data is not None: question = QuestionChoice(range_min=form.range_min.data, range_max=form.range_max.data, range_step = form.range_step.data) else: l = [form.answer1.data, form.answer2.data, form.answer3.data, form.answer4.data, form.answer5.data, form.answer6.data, form.answer7.data, form.answer8.data, form.answer9.data, form.answer10.data, form.answer11.data, form.answer12.data] l_aux=[] for i in l: if len(i)!=0: l_aux.append(i) question = QuestionChoice(choices = l_aux) question.render = form.render.data if form.questionType.data == 'likertScale': question = QuestionLikertScale(minLikert=form.minLikert.data, maxLikert=form.maxLikert.data, labelMin=form.labelMinLikert.data, labelMax=form.labelMaxLikert.data) # subquestion if form.operation.data!='none': condition=Condition(operation=form.operation.data, value=form.value.data) db.session.add(condition) question.condition=condition question.parent=form.question.data #decision: if form.decisionType.data !='none': question.is_real_money= form.is_real_money.data if form.decisionType.data == "part_two": l = [form.answer1.data, form.answer2.data] question.choices = l[0:2] if form.decisionType.data == "decision_five": l = [form.container.data] question.container = l[0:1] if form.feedback.data: question.container = ["feedback"] question.decision=form.decisionType.data question.text = form.text.data question.required = form.required.data question.expectedAnswer = form.expectedAnswer.data question.help_text = form.help_text.data question.maxNumberAttempt = form.maxNumberAttempt.data question.section=section question.last_position() return question