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