Example #1
0
 def test_questions_with_groups(self):
     factory = AppFactory()
     self._build_app_with_groups(factory)
     app = factory.app
     modules, errors = get_app_summary_formdata(app.domain, app)
     question_in_group = modules[0]['forms'][0]['questions'][1]['children'][0]
     self.assertEqual(question_in_group.value, '/data/demographics/age')
Example #2
0
 def test_questions_with_groups(self):
     factory = AppFactory()
     self._build_app_with_groups(factory)
     app = factory.app
     modules, errors = get_app_summary_formdata(app.domain, app)
     question_in_group = modules[0]['forms'][0]['questions'][1]['children'][0]
     self.assertEqual(question_in_group.value, '/data/demographics/age')
Example #3
0
 def page_context(self):
     context = super(AppFormSummaryView, self).page_context
     modules, errors = get_app_summary_formdata(self.domain, self.app, include_shadow_forms=False)
     context.update({
         'page_type': 'form_summary',
         'modules': modules,
         'errors': errors,
     })
     return context
Example #4
0
 def get(self, request, *args, **kwargs):
     modules, errors = get_app_summary_formdata(self.domain, self.app, include_shadow_forms=False)
     return json_response({
         'response': {
             'form_data': {
                 'modules': modules,
                 'errors': errors,
             },
             'case_data': self.app.get_case_metadata().to_json(),
             'form_name_map': _get_name_map(self.app),
         },
         'success': True,
     })
Example #5
0
    def test_advanced_form_get_action_type(self):
        app = Application.new_app('domain', "Untitled Application")

        parent_module = app.add_module(AdvancedModule.new_module('parent', None))
        parent_module.case_type = 'parent'
        parent_module.unique_id = 'id_parent_module'

        form = app.new_form(0, "Untitled Form", None)
        form.xmlns = 'http://id_m1-f0'
        form.actions.load_update_cases.append(LoadUpdateAction(case_type="clinic", case_tag='load_0'))

        modules, errors = get_app_summary_formdata('domain', app)
        self.assertEqual(modules[0]['forms'][0]['action_type'], 'load (load_0)')
Example #6
0
    def test_advanced_form_get_action_type(self):
        app = Application.new_app('domain', "Untitled Application")

        parent_module = app.add_module(AdvancedModule.new_module('parent', None))
        parent_module.case_type = 'parent'
        parent_module.unique_id = 'id_parent_module'

        form = app.new_form(0, "Untitled Form", None)
        form.xmlns = 'http://id_m1-f0'
        form.actions.load_update_cases.append(LoadUpdateAction(case_type="clinic", case_tag='load_0'))

        modules, errors = get_app_summary_formdata('domain', app)
        self.assertEqual(modules[0]['forms'][0]['action_type'], 'load (load_0)')
Example #7
0
    def page_context(self):
        context = super(FormSummaryDiffView, self).page_context

        if self.first_app.master_id != self.second_app.master_id:
            # This restriction is somewhat arbitrary, as you might want to
            # compare versions between two different apps on the same domain.
            # However, it breaks a bunch of assumptions in the UI
            raise Http404()

        first = self._app_dict(self.first_app)
        first['modules'], first['errors'] = get_app_summary_formdata(
            self.domain, self.first_app, include_shadow_forms=False
        )
        second = self._app_dict(self.second_app)
        second['modules'], second['errors'] = get_app_summary_formdata(
            self.domain, self.second_app, include_shadow_forms=False
        )
        context.update({
            'page_type': 'form_diff',
            'app_id': self.app.master_id,
            'first': first,
            'second': second,
        })
        return context
Example #8
0
    def test_form_data_with_case_properties(self):
        factory = AppFactory()
        self._build_app_with_groups(factory)
        app = factory.app
        modules, errors = get_app_summary_formdata(app.domain, app)

        q1_saves = modules[0]['forms'][0]['questions'][0]['save_properties'][0]
        self.assertEqual(q1_saves.case_type, 'household')
        self.assertEqual(q1_saves.property, 'name')

        group_saves = modules[0]['forms'][0]['questions'][1]['children'][0]['save_properties'][0]
        self.assertEqual(group_saves.case_type, 'household')
        self.assertEqual(group_saves.property, 'age')

        q3_loads = modules[0]['forms'][0]['questions'][2]['load_properties'][0]
        self.assertEqual(q3_loads.case_type, 'household')
        self.assertEqual(q3_loads.property, 'polar_bears_seen')
Example #9
0
    def test_form_data_with_case_properties(self):
        factory = AppFactory()
        self._build_app_with_groups(factory)
        app = factory.app

        modules, errors = get_app_summary_formdata(app.domain, app)

        q1_saves = modules[0]['forms'][0]['questions'][0]['save_properties'][0]
        self.assertEqual(q1_saves.case_type, 'household')
        self.assertEqual(q1_saves.property, 'name')

        group_saves = modules[0]['forms'][0]['questions'][1]['children'][0]['save_properties'][0]
        self.assertEqual(group_saves.case_type, 'household')
        self.assertEqual(group_saves.property, 'age')

        q3_loads = modules[0]['forms'][0]['questions'][2]['load_properties'][0]
        self.assertEqual(q3_loads.case_type, 'household')
        self.assertEqual(q3_loads.property, 'polar_bears_seen')
Example #10
0
    def page_context(self):

        if self._show_app_changes_notification():
            messages.warning(
                self.request, 'Hey Dimagi User! Have you tried out '
                '<a href="https://confluence.dimagi.com/display/saas/Viewing+App+Changes+between+versions" '
                'target="_blank">Viewing App Changes between Versions</a> yet? It might be just what you are '
                'looking for!',
                extra_tags='html')

        context = super(AppFormSummaryView, self).page_context
        modules, errors = get_app_summary_formdata(self.domain,
                                                   self.app,
                                                   include_shadow_forms=False)
        context.update({
            'page_type': 'form_summary',
            'modules': modules,
            'errors': errors,
        })
        return context
    def test_form_data_with_case_properties(self):
        factory = AppFactory()
        app = factory.app
        module1, form1 = factory.new_basic_module('open_case', 'household')
        form1_builder = XFormBuilder(form1.name)

        # question 0
        form1_builder.new_question('name', 'Name')

        # question 1 (a group)
        form1_builder.new_group('demographics', 'Demographics')
        # question 2 (a question in a group)
        form1_builder.new_question('age', 'Age', group='demographics')

        # question 3 (a question that has a load property)
        form1_builder.new_question('polar_bears_seen', 'Number of polar bears seen')

        form1.source = form1_builder.tostring(pretty_print=True).decode('utf-8')
        factory.form_requires_case(form1, case_type='household', update={
            'name': '/data/name',
            'age': '/data/demographics/age',
        }, preload={
            '/data/polar_bears_seen': 'polar_bears_seen',
        })
        app.save()

        modules, errors = get_app_summary_formdata(app.domain, app)

        q1_saves = modules[0]['forms'][0]['questions'][0]['save_properties'][0]
        self.assertEqual(q1_saves.case_type, 'household')
        self.assertEqual(q1_saves.property, 'name')

        group_saves = modules[0]['forms'][0]['questions'][2]['save_properties'][0]
        self.assertEqual(group_saves.case_type, 'household')
        self.assertEqual(group_saves.property, 'age')

        q3_loads = modules[0]['forms'][0]['questions'][3]['load_properties'][0]
        self.assertEqual(q3_loads.case_type, 'household')
        self.assertEqual(q3_loads.property, 'polar_bears_seen')