def test_form_pillow_indicators(self):
        since = get_current_seq(XFormInstance.get_db())
        form_id = self._save_doc_to_db('indicator_form.json', XFormInstance)
        form_instance = XFormInstance.get(form_id)

        # Form Label Indicator
        form_label = FormLabelIndicatorDefinition.increment_or_create_unique(
            INDICATOR_TEST_NAMESPACE,
            INDICATOR_TEST_DOMAIN,
            slug='create_form',
            xmlns='http://openrosa.org/formdesigner/indicator-create-xmlns',
        )
        form_label.save()

        # Form Alias
        form_alias = FormDataAliasIndicatorDefinition.increment_or_create_unique(
            INDICATOR_TEST_NAMESPACE,
            INDICATOR_TEST_DOMAIN,
            slug='club_name',
            question_id='location.club',
            xmlns='http://openrosa.org/formdesigner/indicator-create-xmlns',
        )
        form_alias.save()
        self.form_pillow.process_changes(since=since, forever=False)

        indicator_form = IndicatorXForm.get(form_id)
        self.assertNotEqual(indicator_form.get_db().dbname,
                            form_instance.get_db().dbname)
        self.assertNotEqual(indicator_form.computed_, {})
示例#2
0
    def test_form_pillow_indicators(self):
        form_id = self._save_doc_to_db('indicator_form.json', XFormInstance)
        form_instance = XFormInstance.get(form_id)

        # Form Label Indicator
        form_label = FormLabelIndicatorDefinition.increment_or_create_unique(
            INDICATOR_TEST_NAMESPACE,
            INDICATOR_TEST_DOMAIN,
            slug='create_form',
            xmlns='http://openrosa.org/formdesigner/indicator-create-xmlns',
        )
        form_label.save()

        # Form Alias
        form_alias = FormDataAliasIndicatorDefinition.increment_or_create_unique(
            INDICATOR_TEST_NAMESPACE,
            INDICATOR_TEST_DOMAIN,
            slug='club_name',
            question_id='location.club',
            xmlns='http://openrosa.org/formdesigner/indicator-create-xmlns',
        )
        form_alias.save()
        self.form_pillow.process_changes(since=None, forever=False)

        indicator_form = IndicatorXForm.get(form_id)
        self.assertNotEqual(
            indicator_form.get_db().dbname, form_instance.get_db().dbname
        )
        self.assertNotEqual(indicator_form.computed_, {})
示例#3
0
    def test_form_pillow_indicators(self):
        form_id = self._save_doc_to_db("indicator_form.json", XFormInstance)
        form_instance = XFormInstance.get(form_id)

        # Form Label Indicator
        form_label = FormLabelIndicatorDefinition.increment_or_create_unique(
            INDICATOR_TEST_NAMESPACE,
            INDICATOR_TEST_DOMAIN,
            slug="create_form",
            xmlns="http://openrosa.org/formdesigner/indicator-create-xmlns",
        )
        form_label.save()

        # Form Alias
        form_alias = FormDataAliasIndicatorDefinition.increment_or_create_unique(
            INDICATOR_TEST_NAMESPACE,
            INDICATOR_TEST_DOMAIN,
            slug="club_name",
            question_id="location.club",
            xmlns="http://openrosa.org/formdesigner/indicator-create-xmlns",
        )
        form_alias.save()

        self.form_pillow.run_burst()

        indicator_form = IndicatorXForm.get(form_id)
        self.assertNotEqual(indicator_form.get_db().dbname, form_instance.get_db().dbname)
        self.assertNotEqual(indicator_form.computed_, {})
 def create_form_alias_indicators(self, question_ids, xmlns, domain, shared_args):
     for indicator_slug, ids_per_domain in question_ids.items():
         indicator_info = ids_per_domain.get(domain)
         if indicator_info:
             form_question = FormDataAliasIndicatorDefinition.increment_or_create_unique(
                 *shared_args,
                 slug=indicator_slug,
                 xmlns=xmlns,
                 **indicator_info
             )
             print(form_question)
class FormAliasIndicatorDefinitionAdminInterface(BaseIndicatorAdminInterface):
    name = FormDataAliasIndicatorDefinition.get_nice_name()
    description = ("Maps a question id from that form to an indicator slug that can be referenced across all projects "
                   "in the indicator couch views.")
    slug = "form_alias"
    document_class = FormDataAliasIndicatorDefinition
    form_class = FormDataAliasIndicatorDefinitionForm

    @property
    def headers(self):
        header = super(FormAliasIndicatorDefinitionAdminInterface, self).headers
        header.insert_column(DataTablesColumn("XMLNS or Label"), -3)
        header.insert_column(DataTablesColumn("Question ID"), -3)
        return header