def response_for_post_request(self, is_update=None): questionnaire_form = self.form(self.request.POST) quota_reached = is_quota_reached(self.request) if not questionnaire_form.is_valid() or quota_reached: form_context = get_form_context(self.questionnaire, questionnaire_form, self.manager, self.hide_link_class, self.disable_link_class) form_context.update({'is_quota_reached': quota_reached}) return render_to_response(self.template, form_context, context_instance=RequestContext( self.request)) success_message = None error_message = None # if self.is_data_sender: # questionnaire_form.cleaned_data['eid'] = self.request.user.get_profile().reporter_id try: created_request = helper.create_request(questionnaire_form, self.request.user.username, is_update=is_update) reporter_id = self.request.POST.get('dsid') response = self.player_response(created_request, reporter_id) if response.success: ReportRouter().route( get_organization(self.request).org_id, response) success_message = _("Successfully submitted") else: questionnaire_form._errors = helper.errors_to_list( response.errors, self.questionnaire.fields) except DataObjectNotFound as exception: logger.exception(exception) message = exception_messages.get(DataObjectNotFound).get(WEB) error_message = _(message) % (self.questionnaire.entity_type[0], self.questionnaire.entity_type[0]) except Exception as exception: logger.exception('Web Submission failure:-') error_message = _( get_exception_message_for(exception=exception, channel=Channel.WEB)) _project_context = get_form_context(self.questionnaire, questionnaire_form, self.manager, self.hide_link_class, self.disable_link_class, is_update=is_update) _project_context.update({ 'success_message': success_message, 'error_message': error_message, 'questionnaire_form': self.form(), }) return render_to_response(self.template, _project_context, context_instance=RequestContext( self.request))
def response_for_get_request(self, initial_data=None, is_update=False): dashboard_page = settings.HOME_PAGE + "?deleted=true" if self.questionnaire.is_void(): return HttpResponseRedirect(dashboard_page) questionnaire_form = self.form(initial_data=initial_data) form_context = get_form_context(self.questionnaire, questionnaire_form, self.manager, self.hide_link_class, self.disable_link_class, is_update=is_update) if self.questionnaire.xform: form_context.update({ 'xform_xml': re.sub( r"\n", " ", XFormTransformer( self.questionnaire.xform_with_unique_ids_substituted( )).transform()) }) form_context.update({'is_advance_questionnaire': True}) form_context.update( {'submission_create_url': reverse('new_web_submission')}) form_context.update( {'is_quota_reached': is_quota_reached(self.request)}) return render_to_response(self.template, form_context, context_instance=RequestContext( self.request))
def success_resposne(self, is_update, organization, questionnaire_form): success_message = None error_message = None try: created_request = helper.create_request(questionnaire_form, self.request.user.username, is_update=is_update) response = self.player_response(created_request) if response.success: ReportRouter().route(organization.org_id, response) success_message = _("Your changes have been saved.") if is_update else self.success_message( response.short_code) if not is_update: questionnaire_form = self.form(country=organization.country_name()) else: questionnaire_form._errors = helper.errors_to_list(response.errors, self.form_model.fields) except DataObjectNotFound as exception: logger.exception(exception) message = exception_messages.get(DataObjectNotFound).get(WEB) error_message = _(message) % (self.form_model.entity_type[0], self.form_model.entity_type[0]) except Exception as exception: logger.exception('Web Submission failure:-') error_message = _(get_exception_message_for(exception=exception, channel=Channel.WEB)) _project_context = get_form_context(self.form_code, self.project, questionnaire_form, self.manager, self.hide_link_class, self.disable_link_class, is_update=is_update) _project_context.update({'success_message': success_message, 'error_message': error_message}) self._update_form_context(_project_context, questionnaire_form) return render_to_response(self.template, _project_context, context_instance=RequestContext(self.request))
def response_for_get_request(self, initial_data=None, is_update=False): questionnaire_form = self.form(initial_data=initial_data) form_context = get_form_context(self.form_code, self.project, questionnaire_form, self.manager, self.hide_link_class, self.disable_link_class, is_update) self._update_form_context(form_context, questionnaire_form, web_view_enabled=self.request.GET.get("web_view", False)) form_context.update({'is_quota_reached': is_quota_reached(self.request)}) return render_to_response(self.template, form_context, context_instance=RequestContext(self.request))
def invalid_data_response(self, questionnaire_form, is_update): form_context = get_form_context(self.questionnaire, questionnaire_form, self.manager, self.hide_link_class, self.disable_link_class, is_update) self._update_form_context(form_context, questionnaire_form) return render_to_response(self.template, form_context, context_instance=RequestContext( self.request))
def response_for_xform_edit_get_request(self, survey_response_id): # todo delete/refactor this block dashboard_page = settings.HOME_PAGE + "?deleted=true" if self.questionnaire.is_void(): return HttpResponseRedirect(dashboard_page) questionnaire_form = self.form(initial_data=None) form_context = get_form_context(self.questionnaire, questionnaire_form, self.manager, self.hide_link_class, self.disable_link_class, is_update=False) if self.questionnaire.xform: form_context.update({'survey_response_id': survey_response_id}) # xform_transformer = XFormTransformer(self.questionnaire.xform) form_context.update({ 'xform_xml': re.sub( r"\n", " ", XFormTransformer( self.questionnaire.do_enrich_xform()).transform()) }) form_context.update({ 'edit_model_str': self._model_str_of( survey_response_id, get_generated_xform_id_name(self.questionnaire.xform)) }) form_context.update({ 'external_itemset_url': self._get_itemset_url(self.questionnaire) }) form_context.update({ 'submission_update_url': reverse('update_web_submission', kwargs={'survey_response_id': survey_response_id}) }) form_context.update({'is_advance_questionnaire': True}) form_context.update( {'is_quota_reached': is_quota_reached(self.request)}) return render_to_response(self.template, form_context, context_instance=RequestContext( self.request))
def response_for_get_request(self, initial_data=None, is_update=False): dashboard_page = settings.HOME_PAGE + "?deleted=true" if self.questionnaire.is_void(): return HttpResponseRedirect(dashboard_page) questionnaire_form = self.form(initial_data=initial_data) form_context = get_form_context(self.questionnaire, questionnaire_form, self.manager, self.hide_link_class, self.disable_link_class, is_update) form_context.update({ 'is_quota_reached': is_quota_reached(self.request), 'questionnaire_code': self.questionnaire.form_code, 'is_datasender': self.is_data_sender, }) return render_to_response(self.template, form_context, context_instance=RequestContext( self.request))
def edit(request, project_id, survey_response_id, tab=0): manager = get_database_manager(request.user) questionnaire_form_model = Project.get(manager, project_id) dashboard_page = settings.HOME_PAGE + "?deleted=true" reporter_id = NGOUserProfile.objects.get(user=request.user).reporter_id is_linked = reporter_id in questionnaire_form_model.data_senders reporter_name = NGOUserProfile.objects.get( user=request.user).user.first_name if questionnaire_form_model.is_void(): return HttpResponseRedirect(dashboard_page) disable_link_class, hide_link_class = get_visibility_settings_for( request.user) survey_response = get_survey_response_by_id(manager, survey_response_id) back_link = reverse(index, kwargs={ "project_id": project_id, "questionnaire_code": questionnaire_form_model.form_code, "tab": tab }) form_ui_model = build_static_info_context( manager, survey_response, questionnaire_form_model=questionnaire_form_model, reporter_id=reporter_id) form_ui_model.update({ "back_link": back_link, 'is_datasender': is_data_sender(request), 'hide_change': questionnaire_form_model.is_poll and questionnaire_form_model.is_open_survey }) data_sender = get_data_sender(manager, survey_response) short_code = data_sender[1] enable_datasender_edit = True if survey_response.owner_uid else False if request.method == 'GET': form_initial_values = construct_request_dict(survey_response, questionnaire_form_model, short_code) survey_response_form = SurveyResponseForm( questionnaire_form_model, form_initial_values, datasender_name=data_sender[0], reporter_id=reporter_id, reporter_name=reporter_name, enable_datasender_edit=enable_datasender_edit) form_ui_model.update( get_form_context(questionnaire_form_model, survey_response_form, manager, hide_link_class, disable_link_class)) form_ui_model.update({ "redirect_url": "", "reporter_id": reporter_id, "is_linked": is_linked, "is_pro_sms": get_organization(request).is_pro_sms, "reporter_name": reporter_name }) if not survey_response_form.is_valid( ) or form_ui_model['datasender_error_message']: error_message = _("Please check your answers below for errors.") form_ui_model.update({ 'error_message': error_message, "reporter_id": reporter_id, "is_linked": is_linked, "reporter_name": reporter_name }) return render_to_response("project/web_questionnaire.html", form_ui_model, context_instance=RequestContext(request)) if request.method == 'POST': send_to_carbon(create_path('submissions.web.simple'), 1) original_survey_response = survey_response.copy() is_errored_before_edit = True if survey_response.errors != '' else False submitted_values = request.POST owner_id = submitted_values.get("dsid") form_ui_model.update({ "redirect_url": submitted_values.get("redirect_url"), 'is_datasender': is_data_sender(request), "is_pro_sms": get_organization(request).is_pro_sms }) form_ui_model.update( {"click_after_reload": submitted_values.get("click_after_reload")}) if submitted_values.get("discard"): survey_response_form = SurveyResponseForm(questionnaire_form_model, survey_response.values) form_ui_model.update( get_form_context(questionnaire_form_model, survey_response_form, manager, hide_link_class, disable_link_class)) form_ui_model.update({ "reporter_id": reporter_id, "is_linked": is_linked, "reporter_name": reporter_name }) return render_to_response("project/web_questionnaire.html", form_ui_model, context_instance=RequestContext(request)) else: form_initial_values = construct_request_dict( survey_response, questionnaire_form_model, short_code) if not owner_id: submitted_values = submitted_values.copy() submitted_values['dsid'] = form_initial_values['dsid'] survey_response_form = SurveyResponseForm( questionnaire_form_model, submitted_values, initial=form_initial_values, enable_datasender_edit=enable_datasender_edit) form_ui_model.update( get_form_context(questionnaire_form_model, survey_response_form, manager, hide_link_class, disable_link_class)) form_ui_model.update({ "reporter_id": reporter_id, "is_linked": is_linked }) if not survey_response_form.is_valid(): error_message = _("Please check your answers below for errors.") form_ui_model.update({ 'error_message': error_message, "reporter_id": reporter_id, "is_linked": is_linked }) return render_to_response("project/web_questionnaire.html", form_ui_model, context_instance=RequestContext(request)) success_message = _("Your changes have been saved.") form_ui_model.update({ 'success_message': success_message, "reporter_id": reporter_id, "is_linked": is_linked, "reporter_name": reporter_name }) # if len(survey_response_form.changed_data) or is_errored_before_edit: created_request = helper.create_request(survey_response_form, request.user.username) additional_feed_dictionary = get_project_details_dict_for_feed( questionnaire_form_model) user_profile = NGOUserProfile.objects.get(user=request.user) feeds_dbm = get_feeds_database(request.user) response = WebPlayerV2(manager, feeds_dbm, user_profile.reporter_id) \ .edit_survey_response(created_request, survey_response, owner_id, additional_feed_dictionary, websubmission_logger) mail_feed_errors(response, manager.database_name) if response.success: build_static_info_context(manager, survey_response, form_ui_model, questionnaire_form_model, reporter_id) ReportRouter().route(get_organization(request).org_id, response) _update_static_info_block_status(form_ui_model, is_errored_before_edit) log_edit_action(original_survey_response, survey_response, request, questionnaire_form_model.name, questionnaire_form_model) if submitted_values.get("redirect_url"): return HttpResponseRedirect( submitted_values.get("redirect_url")) else: del form_ui_model["success_message"] survey_response_form._errors = helper.errors_to_list( response.errors, questionnaire_form_model.fields) form_ui_model.update({ "reporter_id": reporter_id, "is_linked": is_linked, "reporter_name": reporter_name }) return render_to_response("project/web_questionnaire.html", form_ui_model, context_instance=RequestContext(request))
def edit(request, project_id, survey_response_id, tab=0): manager = get_database_manager(request.user) project = Project.load(manager.database, project_id) questionnaire_form_model = FormModel.get(manager, project.qid) disable_link_class, hide_link_class = get_visibility_settings_for( request.user) survey_response = get_survey_response_by_id(manager, survey_response_id) back_link = reverse(index, kwargs={ "project_id": project_id, "questionnaire_code": questionnaire_form_model.form_code, "tab": tab }) form_ui_model = build_static_info_context(manager, survey_response) form_ui_model.update({"back_link": back_link}) if request.method == 'GET': form_initial_values = construct_request_dict(survey_response, questionnaire_form_model) survey_response_form = EditSubmissionForm(manager, project, questionnaire_form_model, form_initial_values) form_ui_model.update( get_form_context(questionnaire_form_model.form_code, project, survey_response_form, manager, hide_link_class, disable_link_class)) form_ui_model.update({"redirect_url": ""}) if not survey_response_form.is_valid(): error_message = _("Please check your answers below for errors.") form_ui_model.update({'error_message': error_message}) return render_to_response("project/web_questionnaire.html", form_ui_model, context_instance=RequestContext(request)) if request.method == 'POST': original_survey_response = survey_response.copy() is_errored_before_edit = True if survey_response.errors != '' else False form_ui_model.update( {"redirect_url": request.POST.get("redirect_url")}) form_ui_model.update( {"click_after_reload": request.POST.get("click_after_reload")}) if request.POST.get("discard"): survey_response_form = EditSubmissionForm( manager, project, questionnaire_form_model, survey_response.values) form_ui_model.update( get_form_context(questionnaire_form_model.form_code, project, survey_response_form, manager, hide_link_class, disable_link_class)) return render_to_response("project/web_questionnaire.html", form_ui_model, context_instance=RequestContext(request)) else: survey_response_form = EditSubmissionForm( manager, project, questionnaire_form_model, request.POST) form_ui_model.update( get_form_context(questionnaire_form_model.form_code, project, survey_response_form, manager, hide_link_class, disable_link_class)) if not survey_response_form.is_valid(): error_message = _("Please check your answers below for errors.") form_ui_model.update({'error_message': error_message}) return render_to_response("project/web_questionnaire.html", form_ui_model, context_instance=RequestContext(request)) success_message = _("Your changes have been saved.") form_ui_model.update({'success_message': success_message}) if len(survey_response_form.changed_data) or is_errored_before_edit: created_request = helper.create_request(survey_response_form, request.user.username) additional_feed_dictionary = get_project_details_dict_for_feed( project) user_profile = NGOUserProfile.objects.get(user=request.user) feeds_dbm = get_feeds_database(request.user) if questionnaire_form_model.entity_type == ["reporter"]: owner_id = request.POST["eid"] else: owner_id = None response = WebPlayerV2(manager, feeds_dbm, user_profile.reporter_id) \ .edit_survey_response(created_request, survey_response, owner_id, additional_feed_dictionary, websubmission_logger) mail_feed_errors(response, manager.database_name) if response.success: build_static_info_context(manager, survey_response, form_ui_model) ReportRouter().route( get_organization(request).org_id, response) _update_static_info_block_status(form_ui_model, is_errored_before_edit) log_edit_action(original_survey_response, survey_response, request, project.name, questionnaire_form_model) if request.POST.get("redirect_url"): return HttpResponseRedirect( request.POST.get("redirect_url")) else: del form_ui_model["success_message"] survey_response_form._errors = helper.errors_to_list( response.errors, questionnaire_form_model.fields) return render_to_response("project/web_questionnaire.html", form_ui_model, context_instance=RequestContext(request))