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_, {})
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_, {})
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 format_property(self, key, property): if key == "xmlns": from corehq.apps.indicators.models import FormLabelIndicatorDefinition label = FormLabelIndicatorDefinition.get_label_for_xmlns(self.document_instance.namespace, self.document_instance.domain, property) return mark_safe(render_to_string("indicators/partials/form_label.html", { "label": label, "xmlns": property, })) return super(BaseFormIndicatorAdminCRUDManager, self).format_property(key, property)
class FormLabelIndicatorDefinitionAdminInterface(BaseIndicatorAdminInterface): name = FormLabelIndicatorDefinition.get_nice_name() description = "Maps a form_label to an XMLNS for that form." slug = "form_label" document_class = FormLabelIndicatorDefinition form_class = FormLabelIndicatorDefinitionForm @property def headers(self): header = super(FormLabelIndicatorDefinitionAdminInterface, self).headers header.insert_column(DataTablesColumn("XMLNS"), -3) return header
def update_indicators_for_xmlns(self, domain, form_label_filter=None): key = [MVP.NAMESPACE, domain] all_labels = ( FormLabelIndicatorDefinition.get_db() .view("indicators/form_labels", reduce=False, startkey=key, endkey=key + [{}]) .all() ) for label in all_labels: label_name = label["value"] if form_label_filter is not None and form_label_filter != label_name: continue xmlns = label["key"][-2] print "\n\nGetting Forms of Type %s and XMLNS %s for domain %s" % (label_name, xmlns, domain) relevant_forms = ( XFormInstance.get_db() .view( "all_forms/view", reduce=True, startkey=["submission xmlns", domain, xmlns], endkey=["submission xmlns", domain, xmlns, {}], ) .first() ) num_forms = relevant_forms["value"] if relevant_forms else 0 form_ids = [ r["id"] for r in XFormInstance.view( "all_forms/view", reduce=False, include_docs=False, startkey=["submission xmlns", domain, xmlns], endkey=["submission xmlns", domain, xmlns, {}], ).all() ] print "Found %d forms with matching XMLNS %s" % (num_forms, xmlns) relevant_indicators = FormIndicatorDefinition.get_all(namespace=MVP.NAMESPACE, domain=domain, xmlns=xmlns) if relevant_indicators: self._throttle_updates( "Forms (TYPE: %s, XMLNS %s, DOMAIN: %s)" % (label_name, xmlns, domain), relevant_indicators, num_forms, domain, form_ids, XFormInstance, )
def update_indicators_for_xmlns(self, domain, form_label_filter=None): key = [MVP.NAMESPACE, domain] all_labels = FormLabelIndicatorDefinition.get_db().view( 'indicators/form_labels', reduce=False, startkey=key, endkey=key + [{}], ).all() for label in all_labels: label_name = label['value'] if form_label_filter is not None and form_label_filter != label_name: continue xmlns = label['key'][-2] print("\n\nGetting Forms of Type %s and XMLNS %s for domain %s" % (label_name, xmlns, domain)) relevant_forms = XFormInstance.get_db().view( "all_forms/view", reduce=True, startkey=['submission xmlns', domain, xmlns], endkey=['submission xmlns', domain, xmlns, {}], ).first() num_forms = relevant_forms['value'] if relevant_forms else 0 form_ids = [r['id'] for r in XFormInstance.view( "all_forms/view", reduce=False, include_docs=False, startkey=['submission xmlns', domain, xmlns], endkey=['submission xmlns', domain, xmlns, {}], ).all()] print("Found %d forms with matching XMLNS %s" % (num_forms, xmlns)) relevant_indicators = FormIndicatorDefinition.get_all( namespace=MVP.NAMESPACE, domain=domain, xmlns=xmlns ) if relevant_indicators: self._throttle_updates( "Forms (TYPE: %s, XMLNS %s, DOMAIN: %s)" % ( label_name, xmlns, domain), relevant_indicators, num_forms, domain, form_ids, XFormInstance)