Exemplo n.º 1
0
 def setUp(self):
     self.app = Application.new_app(DOMAIN, "Untitled Application")
     self.app.build_spec = BuildSpec(version='tests', build_number=1)
     self.module = self.app.add_module(
         Module.new_module("Untitled Module", None))
     self.app.new_form(0, "Untitled Form", None)
     self.module.case_type = 'case'
     # chosen xpath just used to reference more instances - not considered valid to use in apps
     self.module.case_details.short.columns.append(
         DetailColumn.wrap(
             dict(
                 header={"en": "report_name"},
                 model="case",
                 format="calculate",
                 field="whatever",
                 calc_xpath="instance('reports')/report[1]/name",
             )))
     self.module.case_details.long.columns.append(
         DetailColumn.wrap(
             dict(
                 header={"en": "ledger_name"},
                 model="case",
                 format="calculate",
                 field="whatever",
                 calc_xpath="instance('ledgerdb')/ledgers/name/name",
             )))
     self.module.search_config = CaseSearch(
         command_label={'en': 'Search Patients Nationally'},
         properties=[
             CaseSearchProperty(name='name', label={'en': 'Name'}),
             CaseSearchProperty(name='dob', label={'en': 'Date of birth'})
         ],
         relevant="{} and {}".format("instance('groups')/groups/group",
                                     CLAIM_DEFAULT_RELEVANT_CONDITION),
         default_properties=[
             DefaultCaseSearchProperty(
                 property=u'ɨŧsȺŧɍȺᵽ',
                 defaultValue=
                 (u"instance('casedb')/case"
                  u"[@case_id='instance('commcaresession')/session/data/case_id']"
                  u"/ɨŧsȺŧɍȺᵽ")),
             DefaultCaseSearchProperty(
                 property='name',
                 defaultValue=
                 "instance('locations')/locations/location[@id=123]/@type",
             ),
         ],
     )
 def setUp(self):
     self.app = Application.new_app(DOMAIN, "Untitled Application")
     self.app.build_spec = BuildSpec(version='2.35.0', build_number=1)
     self.module = self.app.add_module(Module.new_module("Untitled Module", None))
     self.app.new_form(0, "Untitled Form", None)
     self.module.case_type = 'case'
     # chosen xpath just used to reference more instances - not considered valid to use in apps
     self.module.case_details.short.columns.append(
         DetailColumn.wrap(dict(
             header={"en": "report_name"},
             model="case",
             format="calculate",
             field="whatever",
             calc_xpath="instance('reports')/report[1]/name",
         ))
     )
     self.module.case_details.long.columns.append(
         DetailColumn.wrap(dict(
             header={"en": "ledger_name"},
             model="case",
             format="calculate",
             field="whatever",
             calc_xpath="instance('ledgerdb')/ledgers/name/name",
         ))
     )
     self.module.search_config = CaseSearch(
         command_label={'en': 'Search Patients Nationally'},
         properties=[
             CaseSearchProperty(name='name', label={'en': 'Name'}),
             CaseSearchProperty(name='dob', label={'en': 'Date of birth'})
         ],
         relevant="{} and {}".format("instance('groups')/groups/group", CLAIM_DEFAULT_RELEVANT_CONDITION),
         default_properties=[
             DefaultCaseSearchProperty(
                 property='ɨŧsȺŧɍȺᵽ',
                 defaultValue=(
                     "instance('casedb')/case"
                     "[@case_id='instance('commcaresession')/session/data/case_id']"
                     "/ɨŧsȺŧɍȺᵽ")
             ),
             DefaultCaseSearchProperty(
                 property='name',
                 defaultValue="instance('locations')/locations/location[@id=123]/@type",
             ),
         ],
     )
Exemplo n.º 3
0
    def test_workflow_registry_module_previous_screen_after_case_list_form(self):
        factory = AppFactory(DOMAIN, "App with DR", build_version='2.53.0')
        m0, f0 = factory.new_basic_module("new case", "case")
        factory.form_opens_case(f0, "case")

        m1, f1 = factory.new_basic_module("update case", "case")
        factory.form_requires_case(f1, "case")

        m1.case_details.long.columns.append(
            DetailColumn.wrap(dict(
                header={"en": "name"},
                model="case",
                format="plain",
                field="whatever",
            ))
        )

        m1.search_config = CaseSearch(
            properties=[
                CaseSearchProperty(name='name', label={'en': 'Name'}),
            ],
            data_registry="myregistry",
            data_registry_workflow=REGISTRY_WORKFLOW_LOAD_CASE,
        )

        m1.case_list_form.form_id = f0.get_unique_id()
        m1.case_list_form.label = {'en': 'New Case'}

        f1.post_form_workflow = WORKFLOW_PREVIOUS
        app = Application.wrap(factory.app.to_json())
        app._id = "123"
        suite = app.create_suite()
        self.assertXmlPartialEqual(
            """
            <partial>
              <create>
                <command value="'m1'"/>
                <query id="results" value="http://localhost:8000/a/test_domain/phone/registry_case/123/">
                  <data key="case_type" ref="'case'"/>
                  <data key="x_commcare_data_registry" ref="'myregistry'"/>
                  <data key="case_id" ref="instance('commcaresession')/session/data/case_id"/>
                </query>
                <datum id="case_id" value="instance('commcaresession')/session/data/case_id"/>
                <query id="registry" value="http://localhost:8000/a/test_domain/phone/registry_case/123/">
                  <data key="x_commcare_data_registry" ref="'myregistry'"/>
                  <data key="case_type" ref="'case'"/>
                  <data key="case_id" ref="instance('commcaresession')/session/data/case_id"/>
                </query>
              </create>
            </partial>
            """,
            suite,
            "./entry[2]/stack/create"
        )
Exemplo n.º 4
0
    def setUp(self):
        self.app = Application.new_app(DOMAIN, "Untitled Application")
        self.app._id = '123'
        self.app.build_spec = BuildSpec(version='2.53.0', build_number=1)
        self.module = self.app.add_module(Module.new_module("Followup", None))
        self.form = self.app.new_form(0, "Untitled Form", None, attachment=get_simple_form("xmlns1.0"))
        self.form.requires = 'case'
        self.module.case_type = 'case'

        self.module.case_details.long.columns.append(
            DetailColumn.wrap(dict(
                header={"en": "name"},
                model="case",
                format="plain",
                field="whatever",
            ))
        )

        self.module.search_config = CaseSearch(
            properties=[
                CaseSearchProperty(name='name', label={'en': 'Name'}),
                CaseSearchProperty(name='favorite_color', label={'en': 'Favorite Color'}, itemset=Itemset(
                    instance_id='item-list:colors', instance_uri='jr://fixture/item-list:colors',
                    nodeset="instance('item-list:colors')/colors_list/colors",
                    label='name', sort='name', value='value'),
                )
            ],
            data_registry="myregistry",
            data_registry_workflow=REGISTRY_WORKFLOW_LOAD_CASE,
            additional_registry_cases=["'another case ID'"],
        )

        self.reg_module = self.app.add_module(Module.new_module("Registration", None))
        self.reg_form = self.app.new_form(1, "Untitled Form", None, attachment=get_simple_form("xmlns1.0"))
        self.reg_module.case_type = 'case'
        self.reg_form.actions.open_case = OpenCaseAction(
            name_update=ConditionalCaseUpdate(question_path="/data/question1")
        )
        self.reg_form.actions.open_case.condition.type = 'always'
        self.reg_form.post_form_workflow = WORKFLOW_FORM
        self.reg_form.form_links = [
            FormLink(form_id=self.form.get_unique_id())
        ]

        # wrap to have assign_references called
        self.app = Application.wrap(self.app.to_json())
        # reset to newly wrapped module
        self.module = self.app.modules[0]
        self.form = self.module.forms[0]
Exemplo n.º 5
0
    def setUp(self):
        self.app = Application.new_app(DOMAIN, "Untitled Application")
        self.app.build_spec = BuildSpec(version='2.35.0', build_number=1)
        self.module = self.app.add_module(
            Module.new_module("Untitled Module", None))
        self.app.new_form(0, "Untitled Form", None)
        self.module.case_type = 'case'

        # chosen xpath just used to reference more instances - not considered valid to use in apps
        self.module.case_details.short.columns.append(
            DetailColumn.wrap(
                dict(
                    header={"en": "report_name"},
                    model="case",
                    format="calculate",
                    field="whatever",
                    calc_xpath="instance('reports')/report[1]/name",
                )))
        self.module.case_details.short.columns.append(
            DetailColumn.wrap(
                dict(
                    header={"en": "moon"},
                    model="case",
                    format="calculate",
                    field="whatever",
                    calc_xpath=
                    "instance('item-list:moons')/moons_list/moons[favorite='yes']/name",
                )))
        self.module.case_details.long.columns.append(
            DetailColumn.wrap(
                dict(
                    header={"en": "ledger_name"},
                    model="case",
                    format="calculate",
                    field="whatever",
                    calc_xpath="instance('ledgerdb')/ledgers/name/name",
                )))
        self.module.search_config = CaseSearch(
            command_label={'en': 'Search Patients Nationally'},
            properties=[
                CaseSearchProperty(name='name', label={'en': 'Name'}),
                CaseSearchProperty(name='dob', label={'en': 'Date of birth'})
            ],
            default_relevant=True,
            additional_relevant="instance('groups')/groups/group",
            search_filter=
            "name = instance('item-list:trees')/trees_list/trees[favorite='yes']/name",
            default_properties=[
                DefaultCaseSearchProperty(
                    property='ɨŧsȺŧɍȺᵽ',
                    defaultValue=
                    ("instance('casedb')/case"
                     "[@case_id='instance('commcaresession')/session/data/case_id']"
                     "/ɨŧsȺŧɍȺᵽ")),
                DefaultCaseSearchProperty(
                    property='name',
                    defaultValue=
                    "instance('locations')/locations/location[@id=123]/@type",
                ),
            ],
        )
Exemplo n.º 6
0
    def setUp(self):
        super().setUp()
        self.app = Application.new_app(DOMAIN, "Application with Shadow")
        self.app._id = '456'
        self.app.build_spec = BuildSpec(version='2.53.0', build_number=1)
        self.module = self.app.add_module(Module.new_module("Followup", None))
        self.form = self.app.new_form(0, "Untitled Form", None, attachment=get_simple_form("xmlns1.0"))
        self.form.requires = 'case'
        self.module.case_type = 'case'

        self.module.case_details.long.columns.append(
            DetailColumn.wrap(dict(
                header={"en": "name"},
                model="case",
                format="plain",
                field="whatever",
            ))
        )

        self.module.search_config = CaseSearch(
            properties=[
                CaseSearchProperty(name='name', label={'en': 'Name'}),
                CaseSearchProperty(name='favorite_color', label={'en': 'Favorite Color'}, itemset=Itemset(
                    instance_id='item-list:colors', instance_uri='jr://fixture/item-list:colors',
                    nodeset="instance('item-list:colors')/colors_list/colors",
                    label='name', sort='name', value='value'),
                )
            ],
            data_registry="myregistry",
            data_registry_workflow=REGISTRY_WORKFLOW_LOAD_CASE,
            additional_registry_cases=["'another case ID'"],
        )

        self.shadow_module = self.app.add_module(ShadowModule.new_module("Shadow", "en"))
        self.shadow_module.source_module_id = self.module.unique_id

        self.shadow_module.case_details.long.columns.append(
            DetailColumn.wrap(dict(
                header={"en": "name"},
                model="case",
                format="plain",
                field="whatever",
            ))
        )

        self.shadow_module.search_config = CaseSearch(
            properties=[
                CaseSearchProperty(name='name', label={'en': 'Name'}),
                CaseSearchProperty(name='favorite_color', label={'en': 'Texture'}, itemset=Itemset(
                    instance_id='item-list:textures', instance_uri='jr://fixture/item-list:textures',
                    nodeset="instance('item-list:textures')/textures_list/textures",
                    label='name', sort='name', value='value'),
                )
            ],
            data_registry="myregistry",
            data_registry_workflow=REGISTRY_WORKFLOW_LOAD_CASE,
        )

        # wrap to have assign_references called
        self.app = Application.wrap(self.app.to_json())

        # reset to newly wrapped module
        self.module = self.app.modules[0]
        self.shadow_module = self.app.modules[1]