コード例 #1
0
    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)
コード例 #2
0
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
コード例 #3
0
 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)
コード例 #4
0
 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
コード例 #5
0
ファイル: view.py プロジェクト: manish211/datawinners
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
コード例 #6
0
    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"))