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)
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)
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)
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')
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)
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})))
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})
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)
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), )
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)
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)
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} )
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)
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)
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})))
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)
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})
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)
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)
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)