Example #1
0
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)
Example #2
0
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