def process(self, form_code, submission_values): form_model = get_form_model_by_code(self.dbm, form_code) project = Project.from_form_model(form_model=form_model) reporter_entity = self.request.get('reporter_entity') if project.is_open_survey or (reporter_entity.short_code == "test" or \ isinstance(form_model, EntityFormModel) or \ reporter_entity.short_code in Project.from_form_model(form_model).data_senders): self.check_answers_numbers() return None self.check_answers_numbers(linked_datasender=False) return self._get_response(form_code)
def get_customized_message_for_questionnaire(dbm, request, message_code, form_code, placeholder_dict=None, form_model=None): if form_model is None: try: form_model = get_form_model_by_code(dbm, form_code) except: pass if form_model is None or isinstance( form_model, EntityFormModel): #For UniqueId registration message = _get_customized_message_for_language( dbm, request.get('organization').language, message_code) else: # For questionnaire submission project = Project.from_form_model(form_model) message = _get_customized_message_for_language(dbm, project.language, message_code) request[ 'is_outgoing_reply_sms_enabled'] = project.is_outgoing_sms_replies_enabled if placeholder_dict: message = _replace_placeholders_in_message(message, placeholder_dict) return message
def test_should_not_show_change_setting_option(self): self.registered_datasenders_page = self._create_project_and_go_to_registered_datasenders( ) self.assertFalse(self.registered_datasenders_page. is_change_setting_option_displayed()) form_model = get_form_model_by_code(self.dbm, self.questionnaire_code) project = Project.from_form_model(form_model) self.assertFalse(project.is_open_survey)
def create_survey_response_from_known_datasender(self, transport_info, form_model, values, reporter_id, response): reporter = by_short_code(self.dbm, reporter_id.lower(), REPORTER_ENTITY_TYPE) owner_uid = reporter.id survey_response = SurveyResponse(self.dbm, transport_info, form_model.id, values=values, owner_uid=owner_uid, admin_id=self.admin_id or reporter_id, response=response) project = Project.from_form_model(form_model) if reporter_id not in project.data_senders: survey_response.is_anonymous_submission = True return survey_response
def project_download(request): project_name = request.POST.get(u"project_name") questionnaire_code = request.POST.get(u'questionnaire_code') manager = get_database_manager(request.user) questionnaire = get_form_model_by_code(manager, questionnaire_code) project = Project.from_form_model(questionnaire) try: raw_excel, file_extension = project.has_attachment()[1:] response = HttpResponse(mimetype="application/vnd.ms-excel", content=raw_excel) response['Content-Disposition'] = 'attachment; filename="%s.%s"' % ( slugify(project_name), file_extension) except LookupError: response = HttpResponse(status=404) return response
def _is_request_valid(self, form_model, reporter_id, extra_data): try: contact = contact_by_short_code(self.dbm, reporter_id) project = Project.from_form_model(form_model=form_model) if not project.is_open_survey and reporter_id not in project.data_senders: return Response(success=False, errors=_create_error("reporter not linked to questionnaire")) if form_model.xform: return Response(success=False, errors=_create_error("advanced questionnaire not supported")) if extra_data: return Response(success=False, errors=_create_error("Wrong number of answers")) return Response(success=True) except FormModelDoesNotExistsException: return Response(success=False, errors=_create_error("form_code not valid")) except DataObjectNotFound: return Response(success=False, errors= _create_error("reporter id not valid"))