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_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 get_exception_message_for(exception, channel=None, formatter=default_formatter): ex_type = type(exception) if channel is not None: message_dict = exception_messages.get(ex_type) if message_dict is None: return _(exception.message) message = message_dict.get(channel) if is_empty(message): message = exception_messages[ex_type].get(DEFAULT) message = _(message) else: message = exception_messages[ex_type][DEFAULT] message = _(message) return formatter(exception, message)
def get_exception_message_for(exception, channel=None): ex_type = type(exception) if channel is not None: message_dict = exception_messages.get(ex_type) if message_dict is None: return exception.message message = message_dict.get(channel) if is_empty(message): message = exception_messages[ex_type].get(DEFAULT) else: message = exception_messages[ex_type][DEFAULT] if isinstance(exception,MangroveException) and exception.data is not None and "%s" in message: return message % exception.data return message
def get_exception_message_for(exception, channel=None): ex_type = type(exception) if channel is not None: message_dict = exception_messages.get(ex_type) if message_dict is None: return exception.message message = message_dict.get(channel) if is_empty(message): message = exception_messages[ex_type].get(DEFAULT) else: message = exception_messages[ex_type][DEFAULT] if isinstance(exception, MangroveException ) and exception.data is not None and "%s" in message: return message % exception.data return message
def create_subject(request, entity_type=None): manager = get_database_manager(request.user) form_model = get_form_model_by_entity_type(manager, [entity_type.lower()]) web_questionnaire_template = get_template(request.user) disable_link_class, hide_link_class = get_visibility_settings_for( request.user) if request.method == 'GET': questionnaire_form = SubjectRegistrationForm(form_model) form_context = _make_form_context( questionnaire_form, entity_type, disable_link_class, hide_link_class, form_model.form_code, get_organization_telephone_number(request), form_model.fields, web_view=request.GET.get("web_view", False)) form_context.update( {'is_pro_sms': get_organization(request).is_pro_sms}) return render_to_response(web_questionnaire_template, form_context, context_instance=RequestContext(request)) if request.method == 'POST': questionnaire_form = SubjectRegistrationForm( form_model, data=request.POST, country=get_organization_country(request)) if not questionnaire_form.is_valid(): form_context = _make_form_context( questionnaire_form, entity_type, disable_link_class, hide_link_class, form_model.form_code, get_organization_telephone_number(request), form_model.fields, web_view=True) return render_to_response(web_questionnaire_template, form_context, context_instance=RequestContext(request)) success_message = None error_message = None try: from datawinners.project.helper import create_request response = WebPlayer( manager, LocationBridge( location_tree=get_location_tree(), get_loc_hierarchy=get_location_hierarchy)).accept( create_request(questionnaire_form, request.user.username), logger=websubmission_logger) if response.success: ReportRouter().route( get_organization(request).org_id, response) success_message = _( "%s with Identification Number %s successfully registered." ) % (entity_type.capitalize(), response.short_code) detail_dict = dict({ "Subject Type": entity_type.capitalize(), "Unique ID": response.short_code }) UserActivityLog().log(request, action=REGISTERED_IDENTIFICATION_NUMBER, detail=json.dumps(detail_dict)) questionnaire_form = SubjectRegistrationForm(form_model) else: from datawinners.project.helper import errors_to_list questionnaire_form._errors = errors_to_list( response.errors, form_model.fields) form_context = _make_form_context( questionnaire_form, entity_type, disable_link_class, hide_link_class, form_model.form_code, get_organization_telephone_number(request), form_model.fields, web_view=True) return render_to_response( web_questionnaire_template, form_context, context_instance=RequestContext(request)) except DataObjectNotFound: message = exception_messages.get(DataObjectNotFound).get(WEB) error_message = _(message) % (form_model.entity_type[0], form_model.entity_type[0]) except DataObjectAlreadyExists as exception: error_message = _( "%s with ID Number '%s' already exists or has previously collected data." ) % (exception.data[2], exception.data[1]) except Exception as exception: error_message = _( get_exception_message_for(exception=exception, channel=Channel.WEB)) subject_context = _make_form_context( questionnaire_form, entity_type, disable_link_class, hide_link_class, form_model.form_code, get_organization_telephone_number(request), form_model.fields, web_view=True) subject_context.update({ 'success_message': success_message, 'error_message': error_message }) return render_to_response(web_questionnaire_template, subject_context, context_instance=RequestContext(request))
def edit_subject(request, entity_type, entity_id, project_id=None): manager = get_database_manager(request.user) form_model = get_form_model_by_entity_type(manager, [entity_type.lower()]) subject = get_by_short_code(manager, entity_id, [entity_type.lower()]) back_link = reverse(all_subjects, args=[entity_type]) web_questionnaire_template = get_template(request.user) disable_link_class, hide_link_class = get_visibility_settings_for( request.user) if request.method == 'GET': initialize_values(form_model, subject) questionnaire_form = SubjectRegistrationForm(form_model) form_context = _make_form_context( questionnaire_form, entity_type, disable_link_class, hide_link_class, form_model.form_code, get_organization_telephone_number(request), form_model.fields, is_update=True, back_link=back_link) form_context.update( {'is_pro_sms': get_organization(request).is_pro_sms}) return render_to_response(web_questionnaire_template, form_context, context_instance=RequestContext(request)) if request.method == 'POST': questionnaire_form = SubjectRegistrationForm( form_model, data=request.POST, country=get_organization_country(request)) if not questionnaire_form.is_valid(): form_context = _make_form_context( questionnaire_form, entity_type, disable_link_class, hide_link_class, form_model.form_code, get_organization_telephone_number(request), form_model.fields, is_update=True, back_link=back_link) return render_to_response(web_questionnaire_template, form_context, context_instance=RequestContext(request)) success_message = None error_message = None try: response = WebPlayer( manager, LocationBridge( location_tree=get_location_tree(), get_loc_hierarchy=get_location_hierarchy)).accept( create_request(questionnaire_form, request.user.username, is_update=True)) if response.success: #assumption q6 - unique_id code and q2 - lastname codes cannot be changed update_submission_search_for_subject_edition( manager, [entity_type], response.processed_data) success_message = _("Your changes have been saved.") questionnaire_form = SubjectRegistrationForm( form_model, data=request.POST, country=get_organization_country(request)) else: from datawinners.project.helper import errors_to_list questionnaire_form._errors = errors_to_list( response.errors, form_model.fields) form_context = _make_form_context( questionnaire_form, entity_type, disable_link_class, hide_link_class, form_model.form_code, get_organization_telephone_number(request), form_model.fields, is_update=True, back_link=back_link) return render_to_response( web_questionnaire_template, form_context, context_instance=RequestContext(request)) except DataObjectNotFound: message = exception_messages.get(DataObjectNotFound).get(WEB) error_message = _(message) % (form_model.entity_type[0], form_model.entity_type[0]) except Exception as exception: error_message = _( get_exception_message_for(exception=exception, channel=Channel.WEB)) subject_context = _make_form_context( questionnaire_form, entity_type, disable_link_class, hide_link_class, form_model.form_code, get_organization_telephone_number(request), form_model.fields, is_update=True, back_link=back_link) subject_context.update({ 'success_message': success_message, 'error_message': error_message }) return render_to_response(web_questionnaire_template, subject_context, context_instance=RequestContext(request))
def create_subject(request, entity_type=None): manager = get_database_manager(request.user) form_model = get_form_model_by_entity_type(manager, [entity_type.lower()]) QuestionnaireForm = WebQuestionnaireFormCreator( None, form_model=form_model).create() web_questionnaire_template = get_template(request.user) disable_link_class, hide_link_class = get_visibility_settings_for( request.user) if request.method == 'GET': questionnaire_form = QuestionnaireForm() form_context = _make_form_context(questionnaire_form, entity_type, disable_link_class, hide_link_class) return render_to_response(web_questionnaire_template, form_context, context_instance=RequestContext(request)) if request.method == 'POST': questionnaire_form = QuestionnaireForm( country=get_organization_country(request), data=request.POST) if not questionnaire_form.is_valid(): form_context = _make_form_context(questionnaire_form, entity_type, disable_link_class, hide_link_class) return render_to_response(web_questionnaire_template, form_context, context_instance=RequestContext(request)) success_message = None error_message = None try: from datawinners.project.helper import create_request response = WebPlayer( manager, LocationBridge( location_tree=get_location_tree(), get_loc_hierarchy=get_location_hierarchy)).accept( create_request(questionnaire_form, request.user.username), logger=websubmission_logger) if response.success: ReportRouter().route( get_organization(request).org_id, response) success_message = (_( "Successfully submitted. Unique identification number(ID) is:" ) + " %s") % (response.short_code, ) detail_dict = dict({ "Subject Type": entity_type.capitalize(), "Unique ID": response.short_code }) UserActivityLog().log(request, action=REGISTERED_SUBJECT, detail=json.dumps(detail_dict)) questionnaire_form = QuestionnaireForm() else: from datawinners.project.helper import errors_to_list questionnaire_form._errors = errors_to_list( response.errors, form_model.fields) form_context = _make_form_context(questionnaire_form, entity_type, disable_link_class, hide_link_class) return render_to_response( web_questionnaire_template, form_context, context_instance=RequestContext(request)) except DataObjectNotFound: message = exception_messages.get(DataObjectNotFound).get(WEB) error_message = _(message) % (form_model.entity_type[0], form_model.entity_type[0]) except DataObjectAlreadyExists as exception: error_message = _( "Entity with Unique Identification Number (ID) = %s already exists." ) % exception.data[1] except Exception as exception: error_message = _( get_exception_message_for(exception=exception, channel=Channel.WEB)) subject_context = _make_form_context(questionnaire_form, entity_type, disable_link_class, hide_link_class) subject_context.update({ 'success_message': success_message, 'error_message': error_message }) return render_to_response(web_questionnaire_template, subject_context, context_instance=RequestContext(request))
def edit_subject(request, entity_type, entity_id, project_id=None): manager = get_database_manager(request.user) form_model = get_form_model_by_entity_type(manager, [entity_type.lower()]) subject = get_by_short_code(manager, entity_id, [entity_type.lower()]) if project_id is not None: back_link = '/project/registered_subjects/%s/' % project_id else: back_link = reverse(all_subjects) for field in form_model.fields: if field.name == LOCATION_TYPE_FIELD_NAME: field.value = ','.join(subject.location_path) elif field.name == GEO_CODE_FIELD_NAME: field.value = ','.join(map(str, subject.geometry['coordinates'])) elif field.name == SHORT_CODE_FIELD: field.value = subject.short_code else: field.value = subject.data[ field.name]['value'] if field.name in subject.data.keys( ) else None field.value = field._to_str() QuestionnaireForm = WebQuestionnaireFormCreator( None, form_model=form_model).create() web_questionnaire_template = get_template(request.user) disable_link_class, hide_link_class = get_visibility_settings_for( request.user) if request.method == 'GET': questionnaire_form = QuestionnaireForm() form_context = _make_form_context(questionnaire_form, entity_type, disable_link_class, hide_link_class, True, back_link) return render_to_response(web_questionnaire_template, form_context, context_instance=RequestContext(request)) if request.method == 'POST': post_data = QueryDict(request.raw_post_data, mutable=True) post_data[ QuestionnaireForm.short_code_question_code] = subject.short_code questionnaire_form = QuestionnaireForm( country=get_organization_country(request), data=post_data) if not questionnaire_form.is_valid(): form_context = _make_form_context(questionnaire_form, entity_type, disable_link_class, hide_link_class, True, back_link) return render_to_response(web_questionnaire_template, form_context, context_instance=RequestContext(request)) success_message = None error_message = None try: from datawinners.project.helper import create_request response = WebPlayer( manager, LocationBridge( location_tree=get_location_tree(), get_loc_hierarchy=get_location_hierarchy)).accept( create_request(questionnaire_form, request.user.username, is_update=True)) if response.success: success_message = _("Your changes have been saved.") questionnaire_form = QuestionnaireForm( country=get_organization_country(request), data=post_data) else: from datawinners.project.helper import errors_to_list questionnaire_form._errors = errors_to_list( response.errors, form_model.fields) form_context = _make_form_context(questionnaire_form, entity_type, disable_link_class, hide_link_class, True, back_link) return render_to_response( web_questionnaire_template, form_context, context_instance=RequestContext(request)) except DataObjectNotFound: message = exception_messages.get(DataObjectNotFound).get(WEB) error_message = _(message) % (form_model.entity_type[0], form_model.entity_type[0]) except Exception as exception: error_message = _( get_exception_message_for(exception=exception, channel=Channel.WEB)) subject_context = _make_form_context(questionnaire_form, entity_type, disable_link_class, hide_link_class, True, back_link) subject_context.update({ 'success_message': success_message, 'error_message': error_message }) return render_to_response(web_questionnaire_template, subject_context, context_instance=RequestContext(request))