예제 #1
0
파일: views.py 프로젝트: nukru/projectQ
def new():
    form = SurveyForm()
    if form.validate_on_submit():
        # file = request.files['file']
        # if file:
        filename = secure_filename(form.surveyXml.data.filename)
        if filename:
            tf = tempfile.NamedTemporaryFile()
            form.surveyXml.data.save(tf.name)
            msg, survey = Survey.from_xml(tf.name, g.user)
            tf.close()
            for m in msg:
                flash(m)
            return redirect(url_for('researcher.index'))
        else:
            survey = Survey( title = form.title.data,
                description = form.description.data,
                endDate = form.endDate.data,
                startDate = None,
                maxNumberRespondents = form.maxNumberRespondents.data,
                duration = form.duration.data,
                researcher = g.user)
            db.session.add(survey)
            db.session.commit()
            flash('Your survey have been saved.')
        return redirect(url_for('researcher.editSurvey',id_survey = survey.id))
    return render_template('/researcher/new.html',
        title = 'New survey',
        form = form)
예제 #2
0
파일: views.py 프로젝트: nukru/projectQ
def editSurvey(id_survey):
    #get survey
    survey = Survey.query.get(id_survey)
    sections = survey.sections.all()
    form = SurveyForm()
    if form.validate_on_submit():
        survey.title = form.title.data
        survey.description = form.description.data
        survey.startDate = form.startDate.data
        survey.endDate = form.endDate.data
        survey.maxNumberRespondents = form.maxNumberRespondents.data
        survey.duration = form.duration.data
        db.session.add(survey)
        db.session.commit()
        flash('Your changes have been saved.')
    elif request.method != "POST":
        form.title.data = survey.title
        form.description.data = survey.description
        form.startDate.data = survey.startDate
        form.endDate.data = survey.endDate
        form.maxNumberRespondents.data = survey.maxNumberRespondents
        form.duration.data = survey.duration
    return render_template('/researcher/editSurvey.html',
        title = survey.title,
        form = form,
        survey = survey,
        sections = sections)
예제 #3
0
def postsurvey():

    user = models.User.query.filter_by(username=current_user.username).first()
    if request.method == "GET" and user.time_end == None:
        local_user = db.session.merge(user)
        local_user.time_end = datetime.datetime.now()
        db.session.add(local_user)
        db.session.commit()

    form = SurveyForm()
    if form.validate_on_submit():
        responses = models.SurveyAnswers(user=current_user.username,
                                         timestamp=datetime.datetime.now(),
                                         mental=form.mental.data,
                                         physical=form.physical.data,
                                         temporal=form.temporal.data,
                                         performance=form.performance.data,
                                         effort=form.effort.data,
                                         frustration=form.frustration.data,
                                         useful_info=clean(
                                             form.useful_info.data),
                                         feedback=clean(form.feedback.data))
        local_user = db.session.merge(user)
        local_user.survey_complete = True
        db.session.add(responses, local_user)
        db.session.commit()
        return redirect(url_for('completion'))
    return render_template('postsurvey.html', form=form)
예제 #4
0
파일: app.py 프로젝트: yrtsprmb/zappor
def survey_detail(id):
    '''
    Shows the details of a survey specified by its id (web GUI).
    '''
    #srvy = SurveyModel.find_survey_by_id(id)
    srvy = db.session.query(SurveyModel).get(id)
    if srvy is None:
        abort(404)

    form = SurveyForm()

    if request.method != 'POST':
        form.status.default = srvy.status
        form.process()

    if form.validate_on_submit():
        if (srvy.status == 'created' or srvy.status == 'active' or srvy.status
                == 'paused') and (form.status.data == 'active'
                                  or form.status.data == 'paused'
                                  or form.status.data == 'done'):
            old_status = srvy.status
            srvy.status = form.status.data
            srvy.save_to_db()
            flash("Status changed")
            return redirect(url_for('surveys_list'))
    else:
        print(form.errors)

    return render_template('srvys/survey.html',
                           srvy=srvy,
                           form=form,
                           title='survey details')
예제 #5
0
파일: main.py 프로젝트: nyp-leon/OOPP-Slazz
def Survey():
    form = SurveyForm()
    if form.validate_on_submit():
        flash(
            f'F&B: {form.f_budget.data}\n Essential: {form.e_budget.data}\n Leisure: {form.l_budget.data}\n Others: {form.o_budget.data} Submitted!',
            'success')
        data.save_budget(form)
        return redirect(url_for('Advisor'))

    return render_template("Survey.html", title='Survey', form=form)
예제 #6
0
파일: views.py 프로젝트: xunxuny/vote
def edit(request, id):
    """ 编辑投票项的基础信息 """
    obj = get_object_or_404(model_class, id=id)
    form = SurveyForm(instance=obj)
    if request.method == "POST":
        data=request.POST
        form = SurveyForm(data,instance=obj)
        if form.is_valid():
            o = form.save()
            return HttpResponseRedirect(reverse("table_detail", args=[obj.pk]))
    return  HttpResponse(Template("{{ form }}").render(Context({'form': form})))
예제 #7
0
파일: views.py 프로젝트: rashoodkhan/bams
def add_survey(request):
	if request.method == "POST":
		form = SurveyForm(request.POST)
		if form.is_valid():
			form.save(commit=True)
			data = Survey.objects.all()
			return render(request,'survey/survey.html',{
				'data':data,
			    'success_added':1
			})
		else:
			return render(request,'survey/survey_form.html',{'form':form,'error':1})

	form = SurveyForm()
	return render(request,'survey/survey_form.html',{'form':form})
예제 #8
0
파일: views.py 프로젝트: pyarun/djdrill
def create_survey(request):
    """
        Allows the logged in User to Create new Surveys.
    """
    context = {}
    if request.method == "GET":
        form = SurveyForm()
        context["form"] = form
        
    if request.method == "POST":
        form = SurveyForm(request.POST)
        if form.is_valid():
            pass
        else:
            
        
    
#    logger.info("{user} accessed create survey page".format(user=request.user.get_full_name()))
    return render(request, "create_survey.html", context)
예제 #9
0
파일: views.py 프로젝트: jmcarp/gradpay
def survey(request):

    # Save data or display form
    if request.method == 'POST':
        survey_form = SurveyForm(request.POST)
        if survey_form.is_valid():
            survey_form.save()
            # Redirect
            return render_to_response(
                'survey_complete.html',
                context_instance=RequestContext(request),
            )
    else:
        survey_form = SurveyForm()

    # Display form
    return render_to_response(
        'survey.html',
        {'form': survey_form},
        RequestContext(request),
    )
예제 #10
0
def survey_update(request, survey_id):
    survey = Survey.objects.get(id=survey_id)
    if request.method == 'POST':
        form = SurveyForm(request.POST)
        try:
            title = request.POST.get('title')
            survey.title = title

            datastore = request.POST.get('datastore')
            survey.datastore_id = datastore

            survey.save()

            ordered = request.POST.get('order')

            if ordered.__len__() > 0:
                ids = ordered.split(',')
                count = 0
                for id in ids:
                    section = SurveySection.objects.get(id=id)
                    section.order = count
                    section.save()
                    count = count + 1

            return HttpResponseRedirect(
                reverse('survey_permissions', kwargs={'survey_id': survey_id}))

        except Exception as e:
            try:
                msg = e.get_message()
            except:
                msg = _("Error: survey could not be published")
            form.add_error(None, msg)

    else:
        form = SurveyForm(instance=survey)

    if not request.user.is_superuser:
        form.fields['datastore'].queryset = Datastore.objects.filter(
            created_by__exact=request.user.username)

    sections = SurveySection.objects.filter(
        survey_id=survey.id).order_by('order')

    image = ''
    if survey.project_id:
        p = survey.project
        if "no_project.png" in p.image.url:
            image = p.image.url.replace(settings.MEDIA_URL, '')
        else:
            image = p.image.url

    response = {
        'form': form,
        'survey': survey,
        'image': image,
        'sections': sections
    }

    return render(request, 'survey_update.html', response)
예제 #11
0
파일: views.py 프로젝트: tedoreve/vote
def new(request):
    form_class = SurveyForm
    template_name = base_template_name + 'new.html'
    if request.method == "POST":
        form = form_class(request.POST)
        if form.is_valid():
            obj = form.save(commit=False)
            obj.created_by = request.user
            obj.save()
            return HttpResponseRedirect(reverse("table_detail", args=[obj.pk]))
    else:
        form = SurveyForm()
    ctx = {"form": form}
    ctx['menu_tree_selected_node'] = 'mt_ta_list'
    return render(request, template_name, ctx)
예제 #12
0
 def get(self, request, *args, **kwargs):
     if 'event' in request.GET:
         event = Event.objects.get(pk = request.GET['event'])
         surveys = event.surveys()
         return self.render_to_response( {'surveys': surveys} )
     
     if 'survey' in request.GET:
         survey = Survey.objects.get(pk = request.GET['survey'])
         form = SurveyForm( instance = survey)
         return self.render_to_response( {'form':form, 'survey': survey} )
     
     if 'unsold' in request.GET:
         surveys = Survey.objects.filter(event = request.GET['unsold'], mailed = 0)
         surveys = surveys.exclude(interest = None)
         return self.render_to_response( {'surveys': surveys} )
예제 #13
0
def questions_page():
    submit_form = SurveyForm()
    user_persona_id = int(request.args.get('user_persona_id'))

    if submit_form.validate_on_submit():
        forms = [
            submit_form.sat, submit_form.wlb, submit_form.opp, submit_form.ski,
            submit_form.fin, submit_form.imp
        ]
        evidence = {}
        for f in forms:
            evidence[f.form_name] = {
                f.answer.label.text: f.answer.data,
                f.weight.label.text: f.weight.data
            }

        return redirect(
            url_for('frontend.result_page',
                    evidence=evidence,
                    user_persona_id=user_persona_id))

    return render_template("questions.html",
                           submit_form=submit_form,
                           user_persona_id=user_persona_id)
예제 #14
0
파일: views.py 프로젝트: gamblegear/djmatt
def mine_survey_view(request):
    if request.method == 'GET':
        user = request.user
        data_dict = {}
        data_dict['survey'] = SurveyForm();
        panels = Panel.objects.filter(user = user)
        if len(panels) > 1:
            return HttpResponseRedirect("/thanks")
        if UserSurvey.objects.filter(user_profile = request.user.userprofile):#request.user.userprofile.usersurvey:
            return HttpResponseRedirect("/wait_room")

        return render(request, 'survey.html', data_dict)
    else:
        # if UserSurvey.objects.filter(user_profile = request.user.userprofile):#request.user.userprofile.usersurvey:
        #     return HttpResponseRedirect("/wait_room")# HttpResponse('Already there')
        profile = UserSurvey(user_profile = request.user.userprofile)
        f = SurveyForm(request.POST, instance = profile)
        if f.is_valid():
            f.save()
            return HttpResponseRedirect("/wait_room")
        error_dict = {}
        error_dict['error'] = "Form invalid!"
        error_dict['relocation'] = "/mine_survey"
        return render(request, 'error.html', error_dict)
def login():
    form = SurveyForm()
    current_uuid = get_uuid_from_cookie(request.cookies)
    if request.method == 'POST':
        s = SurveyResult(
            type_of_use=str(form.type_of_use.data),
            frequency_of_use=str(form.use_frequency.data),
            length_of_use=str(form.length_of_use.data),
            user_id=current_uuid,
        )
        db.session.add(s)
        db.session.commit()
        return render_template('survey_thanks.html')

    if request.method == 'GET':
        return render_template('survey.html', title='Reddit Use', form=form)
예제 #16
0
파일: views.py 프로젝트: tedoreve/vote
def edit(request, id):
    """ 编辑投票项的基础信息 """
    obj = get_object_or_404(model_class, id=id)
    form = SurveyForm(instance=obj)
    if request.method == "POST":
        data = request.POST
        form = SurveyForm(data, instance=obj)
        if form.is_valid():
            o = form.save()
            return HttpResponseRedirect(reverse("table_detail", args=[obj.pk]))
    return HttpResponse(Template("{{ form }}").render(Context({'form': form})))
예제 #17
0
def survey(park_id=1):
    pa = park.query.get_or_404(park_id)
    pas = park_asset.query.filter_by(park_id=park_id).all()
    l = []
    for p in pas:
        l.append(p.id)
    form = SurveyForm()
    form.survey.restrict(l)

    pa = park.query.get_or_404(park_id)

    return render_template('survey.html',
                           form=form,
                           qualities=Quality,
                           statuses=Status,
                           governances=Governance,
                           pa=pa)
예제 #18
0
def survey_add(request):
    if request.method == 'POST':
        form = SurveyForm(request.POST)
        has_errors = False
        try:
            newSurvey = Survey()

            name = request.POST.get('name')
            newSurvey.name = name
            
            title = request.POST.get('title')
            newSurvey.title = title
            
            datastore = request.POST.get('datastore')
            newSurvey.datastore_id = datastore
            
            exists = False
            projects = Project.objects.all()
            for p in projects:
                if name == p.name:
                    exists = True
            
            if name == '':
                message = _(u'You must enter an survey name')
                return render(request, 'survey_add.html', {'message': message, 'form': form})
            
            if _valid_name_regex.search(name) == None:
                message = _(u"Invalid survey name: '{value}'. Identifiers must begin with a letter or an underscore (_). Subsequent characters can be letters, underscores or numbers").format(value=name)
                return render(request, 'survey_add.html', {'message': message, 'form': form})
              
            if not exists:     
                newSurvey.save()
                return redirect('survey_update', survey_id=newSurvey.id)
            else:
                message = _(u'Exists a project with the same name')
                return render(request, 'survey_add.html', {'message': message, 'form': form})
        
       
            #msg = _("Error: fill all the survey fields")
            #form.add_error(None, msg)
            
        except Exception as e:
            try:
                msg = e.get_message()
            except:
                msg = _("Error: survey could not be published")
            form.add_error(None, msg)

    else:
        form = SurveyForm()
        
    return render(request, 'survey_add.html', {'form': form})
예제 #19
0
def welcome():
    form = SurveyForm(request.form)
    if request.method == 'POST':
        if form.answer.data == 'r1':
            surveyInfo = SurveyData(answer="Social Medias")
            db.session.add(surveyInfo)
            db.session.commit()
        elif form.answer.data == 'r2':
            surveyInfo = SurveyData(answer="Networking Events")
            db.session.add(surveyInfo)
            db.session.commit()
        elif form.answer.data == 'r3':
            surveyInfo = SurveyData(answer="Other")
            db.session.add(surveyInfo)
            db.session.commit()
        else:
            flash("You must select an option to submit for the survey")
            return redirect(url_for('welcome'))
        return redirect(url_for('surveyResponse'))
    return render_template('home.html', form=form)
예제 #20
0
파일: app.py 프로젝트: mchensd/MyPhonePoll2
def phone_view(id):
    ph = PhoneNumber.query.get(id)
    print(ph.in_use)
    if ph.in_use:
        form = DestroySurveyForm()
        if form.validate_on_submit():
            ph.destroy_survey()
            return redirect(url_for('phone_view', id=id))
        poll = eval(ph.choices)
        return render_template('poll_view.html',
                               title=ph.title,
                               poll=poll,
                               form=form)
    else:
        form = SurveyForm()
        if form.validate_on_submit():

            print(form.choices.data)
            choices = form.choices.data
            while '' in choices:
                choices.remove('')
                print(choices)

            count = {}
            for choice in choices:
                choice = choice.lower()
                choice = choice.strip()
                count[choice] = 0
                print(count)
            ph.make_survey(count)
            ph.title = form.title.data
            db.session.commit()
            print("Redirecting")
            return redirect(url_for('phone_view', id=id))

        return render_template("new_poll.html", form=form)
예제 #21
0
def processSurvey(request, adminView=False, adminViewId=None, userName=None):

    NatLangFormset = formset_factory(
        NativeLangForm,
        min_num=1,
        validate_min=True,
        extra=0,
        can_delete=True,
        formset=BaseLangFormSet,
    )
    HerLangFormset = formset_factory(
        HeritageLangForm,
        can_delete=True,
        formset=BaseLangFormSet,
    )

    ForLangFormset = formset_factory(
        ForeignLangForm,
        can_delete=True,
        formset=BaseLangFormSet,
    )

    if request.method == 'POST':

        form = SurveyForm(request.POST)
        natLangsForms = NatLangFormset(request.POST,
                                       request.FILES,
                                       prefix=u"natLang")
        herLangsForms = HerLangFormset(request.POST,
                                       request.FILES,
                                       prefix=u"herLang")
        forLangsForms = ForLangFormset(request.POST,
                                       request.FILES,
                                       prefix=u"forLang")

        mainFormValid = form.is_valid()
        # see if the foreign languages were visible and need validation
        forLangBoolVal = form.cleaned_data.get("foreignLangBool")
        herLangBoolVal = form.cleaned_data.get("heritageLangBool")

        if not forLangBoolVal:
            for flf in forLangsForms:
                flf.needsValidation = False
        if not herLangBoolVal:
            for hlf in herLangsForms:
                hlf.needsValidation = False

        natLangsValid = natLangsForms.is_valid()
        forLangsValid = forLangsForms.is_valid()
        herLangsValid = herLangsForms.is_valid()

        if not forLangBoolVal:
            # post is valid but we won't be saving any data for it
            forLangsValid = True
        if not herLangBoolVal:
            herLangsValid = True

        if mainFormValid and natLangsValid and herLangsValid and forLangsValid:
            data = form.cleaned_data

            # see if admin is updating or if participant is posting new
            surveyLine = None
            try:
                if adminView:
                    surveyLine = SurveyLine.objects.get(id=adminViewId)
                else:
                    surveyLine = SurveyLine.objects.get(userName=userName)
            except ObjectDoesNotExist:
                pass

            if surveyLine is not None:
                # we are updating a pre-existing entry

                # first is the model attribute, second is the form attribute
                attrs = [
                    "age",
                    "gender",
                    "education",
                    "undergradLevel",
                    "foreignLangBool",
                    "heritageLangBool",
                    "visionProblems",
                    "visionProblemsDetails",
                    "hearingProblems",
                    "hearingProblemsDetails",
                ]

                for att in attrs:
                    setattr(surveyLine, att, data[att])

                surveyLine.dateLastEdited = timezone.now()

                if adminView and "adminComment" in data:
                    surveyLine.adminComment = data["adminComment"]

                # It's going to be easier to delete than to update
                nlEntry = surveyLine.nativelangline_set.all()
                hlEntry = surveyLine.heritagelangline_set.all()
                flEntry = surveyLine.foreignlangline_set.all()
                for lq in [nlEntry, hlEntry, flEntry]:
                    for le in lq:
                        le.delete()

                surveyLine.save()

            else:
                # we are creating a new entry
                surveyLine = SurveyLine(
                    userName=request.user,
                    date=timezone.now(),
                    age=data['age'],
                    gender=data["gender"],
                    education=data['education'],
                    undergradLevel=data['undergradLevel'],
                    visionProblems=data['visionProblems'],
                    visionProblemsDetails=data['visionProblemsDetails'],
                    hearingProblems=data['hearingProblems'],
                    hearingProblemsDetails=data['hearingProblemsDetails'],
                    foreignLangBool=data['foreignLangBool'],
                    heritageLangBool=data['heritageLangBool'],
                )
                surveyLine.save()

            for natLangForm in natLangsForms:
                data = natLangForm.cleaned_data
                if not data["DELETE"]:
                    natLangLine = NativeLangLine(
                        surveyId=surveyLine,
                        nativeLang=data["nativeLang"],
                    )
                    natLangLine.save()

            if forLangBoolVal:
                for forLangForm in forLangsForms:
                    data = forLangForm.cleaned_data
                    if not data["DELETE"]:
                        forLangLine = ForeignLangLine(
                            surveyId=surveyLine,
                            foreignLang=data["foreignLang"],
                            proficiency=data["proficiency"],
                            school=data["school"],
                            lived=data["lived"],
                            worked=data["worked"],
                            other=data["other"],
                            schoolSemestersTotal=forLangForm.schoolTotal,
                            livedDaysTotal=forLangForm.livedTotal,
                            workedDaysTotal=forLangForm.workedTotal,
                            otherDaysTotal=forLangForm.otherTotal,
                            schoolSemesters=data["schoolSemesters"],
                            schoolYears=data["schoolYears"],
                            livedYears=data["livedYears"],
                            workedYears=data["workedYears"],
                            otherYears=data["otherYears"],
                            livedMonths=data["livedMonths"],
                            workedMonths=data["workedMonths"],
                            otherMonths=data["otherMonths"],
                            livedWeeks=data["livedWeeks"],
                            workedWeeks=data["workedWeeks"],
                            otherWeeks=data["otherWeeks"],
                            livedDays=data["livedDays"],
                            workedDays=data["workedDays"],
                            otherDays=data["otherDays"],
                        )
                        otherDesc = data.get("otherStudyExplanation")
                        if otherDesc is not None:
                            forLangLine.otherDescription = otherDesc

                        forLangLine.save()

            if herLangBoolVal:
                for herLangForm in herLangsForms:
                    data = herLangForm.cleaned_data
                    if not data["DELETE"]:
                        herLangLine = HeritageLangLine(
                            surveyId=surveyLine,
                            heritageLang=data["heritageLang"],
                            explanation=data["explanation"],
                        )
                        herLangLine.save()

            if adminView:
                compTemp = "editSuccessful.html"
            else:
                compTemp = "completed.html"
            return request, compTemp, {}

        else:
            logger.info('Form is not valid')

    # the "if" before this was if == "POST"
    else:

        entry = None
        try:

            if adminView:
                entry = get_object_or_404(SurveyLine, id=adminViewId)
            else:
                # see if we have an entry in the database
                entry = SurveyLine.objects.get(userName=userName)

        except ObjectDoesNotExist:

            pass

        if entry is not None:

            initial = {
                "adminComment": entry.adminComment,
                "age": entry.age,
                "gender": entry.gender,
                "education": entry.education,
                "undergradLevel": entry.undergradLevel,
                "foreignLangBool": entry.foreignLangBool,
                "heritageLangBool": entry.heritageLangBool,
                "visionProblems": entry.visionProblems,
                "visionProblemsDetails": entry.visionProblemsDetails,
                "hearingProblems": entry.hearingProblems,
                "hearingProblemsDetails": entry.hearingProblemsDetails,
            }
            form = SurveyForm(initial=initial)

            # nativeLangEntries
            nles = entry.nativelangline_set.all()
            nlInitials = []
            for nle in nles:
                nlInitial = {
                    "nativeLang": nle.nativeLang,
                }
                nlInitials.append(nlInitial)

            # foreignLangEntries
            fles = entry.foreignlangline_set.all()

            if fles:
                # overwrite initial factory to set extra=0
                ForLangFormset = formset_factory(
                    ForeignLangForm,
                    can_delete=True,
                    formset=BaseLangFormSet,
                    extra=0,
                )

            flInitials = []
            for fle in fles:
                flInitial = {
                    "foreignLang": fle.foreignLang,
                    "proficiency": fle.proficiency,
                    "school": fle.school,
                    "lived": fle.lived,
                    "worked": fle.worked,
                    "other": fle.other,
                    "schoolSemesters": fle.schoolSemesters,
                    "livedDays": fle.livedDays,
                    "workedDays": fle.workedDays,
                    "otherDays": fle.otherDays,
                    "otherStudyExplanation": fle.otherDescription,
                    "schoolYears": fle.schoolYears,
                    "livedYears": fle.livedYears,
                    "workedYears": fle.workedYears,
                    "otherYears": fle.otherYears,
                    "livedMonths": fle.livedMonths,
                    "workedMonths": fle.workedMonths,
                    "otherMonths": fle.otherMonths,
                    "livedWeeks": fle.livedWeeks,
                    "workedWeeks": fle.workedWeeks,
                    "otherWeeks": fle.otherWeeks,
                    "livedDays": fle.livedDays,
                    "workedDays": fle.workedDays,
                    "otherDays": fle.otherDays,
                }
                flInitials.append(flInitial)

            hles = entry.heritagelangline_set.all()
            hlInitials = []
            if hles:
                HerLangFormset = formset_factory(
                    HeritageLangForm,
                    can_delete=True,
                    formset=BaseLangFormSet,
                    extra=0,
                )
            hlInitials = []
            for hle in hles:
                hlInitial = {
                    "heritageLang": hle.heritageLang,
                    "explanation": hle.explanation,
                }
                hlInitials.append(hlInitial)

            natLangsForms = NatLangFormset(prefix=u"natLang",
                                           initial=nlInitials)
            forLangsForms = ForLangFormset(prefix=u"forLang",
                                           initial=flInitials)
            herLangsForms = HerLangFormset(prefix=u"herLang",
                                           initial=hlInitials)

        # we have no entry, give them empty form
        else:
            form = SurveyForm()
            natLangsForms = NatLangFormset(prefix=u"natLang")
            herLangsForms = HerLangFormset(prefix=u"herLang")
            forLangsForms = ForLangFormset(prefix=u"forLang")

    argsDict = {
        'form': form,
        'natLangsForms': natLangsForms,
        'herLangsForms': herLangsForms,
        'forLangsForms': forLangsForms,
    }

    return request, "survey.html", argsDict
def survey():
    form = SurveyForm()
    if form.validate_on_submit():

        if form.purchase_online.data == 'false':
            last_purchase = 'none'
            purchase_frequency = 'none'
        else:
            last_purchase = form.last_purchase.data
            purchase_frequency = form.purchase_frequency.data

        survey = Survey(
            sex=form.sex.data,
            comment=form.comment.data,
            age=form.age.data,
            martial_status=form.martial_status.data,
            internet_usage=form.internet_usage.data,
            internet_frequency=form.internet_frequency.data,
            purchase_online=form.purchase_online.data,
            purchase_frequency=purchase_frequency,
            last_purchase=last_purchase,
            employment_status=form.employment_status.data,
            income_range=form.income_range.data,
            q01_1=int(form.q01_1.data),
            q01_2=int(form.q01_2.data),
            q02_1=int(form.q02_1.data),
            q02_2=int(form.q02_2.data),
            q03_1=int(form.q03_1.data),
            q03_2=int(form.q03_2.data),
            q04_1=int(form.q04_1.data),
            q04_2=int(form.q04_2.data),
            q05_1=int(form.q05_1.data),
            q05_2=int(form.q05_2.data),
            q06_1=int(form.q06_1.data),
            q06_2=int(form.q06_2.data),
            q07_1=int(form.q07_1.data),
            q07_2=int(form.q07_2.data),
            q08_1=int(form.q08_1.data),
            q08_2=int(form.q08_2.data),
            q09_1=int(form.q09_1.data),
            q09_2=int(form.q09_2.data),
            q10_1=int(form.q10_1.data),
            q10_2=int(form.q10_2.data),
            q11_1=int(form.q11_1.data),
            q11_2=int(form.q11_2.data),
            q12_1=int(form.q12_1.data),
            q12_2=int(form.q12_2.data),
            q13_1=int(form.q13_1.data),
            q13_2=int(form.q13_2.data),
            q14_1=int(form.q14_1.data),
            q14_2=int(form.q14_2.data),
            q15_1=int(form.q15_1.data),
            q15_2=int(form.q15_2.data),
            q16_1=int(form.q16_1.data),
            q16_2=int(form.q16_2.data),
            q17_1=int(form.q17_1.data),
            q17_2=int(form.q17_2.data),
            q18_1=int(form.q18_1.data),
            q18_2=int(form.q18_2.data),
            q19_1=int(form.q19_1.data),
            q19_2=int(form.q19_2.data),
            q20_1=int(form.q20_1.data),
            q20_2=int(form.q20_2.data),
            q21_1=int(form.q21_1.data),
            q21_2=int(form.q21_2.data),
            q22_1=int(form.q22_1.data),
            q22_2=int(form.q22_2.data),
            q23_1=int(form.q23_1.data),
            q23_2=int(form.q23_2.data),
            q24_1=int(form.q24_1.data),
            q24_2=int(form.q24_2.data),
            q25_1=int(form.q25_1.data),
            q25_2=int(form.q25_2.data),
            q26_1=int(form.q26_1.data),
            q27_1=int(form.q27_1.data),
        )
        try:
            survey.put()
            flash(u'Thank you', 'success')
            return redirect(url_for('thankyou'))
        except CapabilityDisabledError:
            flash(u'App Engine Datastore is currently in read-only mode.', 'info')
            return redirect(url_for('home'))
    return render_template('survey.html', form=form)