def testConvertAndRestoreReportXFormDicts(self): orig = CONCEPT_XFORM orig['domain'] = settings.ES_XFORM_FULL_INDEX_DOMAINS[0] for_indexing = transform_xform_for_report_forms_index(orig) restored = restore_property_dict(for_indexing) #appVersion might be munged in meta, so swapping it out orig_appversion = orig['form']['meta']['appVersion'] restored_appversion = restored['form']['meta']['appVersion'] if isinstance(orig_appversion, dict): self.assertEqual(restored_appversion, orig_appversion['#text']) else: self.assertEqual(restored_appversion, orig_appversion) del(orig['form']['meta']['appVersion']) del(restored['form']['meta']['appVersion']) # user_type gets added in change_transform del(restored['user_type']) del(for_indexing['user_type']) # inserted during the transform del(restored['inserted_at']) del(for_indexing['inserted_at']) del(restored['form']['meta']['app_build_version']) del(restored['form']['meta']['commcare_version']) del(restored['form']['meta']['geo_point']) self.assertNotEqual(for_indexing, orig) self.assertNotEqual(for_indexing, restored) del restored['backend_id'] self.assertEqual(orig, restored)
def run_query(self, es_query): es_results = super(XFormES, self).run_query(es_query) #hack, walk the results again, and if we have xmlns, populate human readable names # Note that `get_unknown_form_name` does not require the request, which is also # not necessarily available here. So `None` is passed here. form_filter = FormsByApplicationFilter(None, domain=self.domain) for res in es_results.get('hits', {}).get('hits', []): if '_source' in res: res_source = restore_property_dict(res['_source']) res['_source'] = res_source xmlns = res['_source'].get('xmlns', None) name = None if xmlns: name = form_filter.get_unknown_form_name( xmlns, app_id=res['_source'].get('app_id', None), none_if_not_found=True) if not name: name = 'unknown' # try to fix it below but this will be the default # fall back try: if res['_source']['form'].get('@name', None): name = res['_source']['form']['@name'] else: backup = res['_source']['form'].get( '#type', 'data') if backup != 'data': name = backup except (TypeError, KeyError): pass res['_source']['es_readable_name'] = name return es_results
def run_query(self, es_query): es_results = super(XFormES, self).run_query(es_query) #hack, walk the results again, and if we have xmlns, populate human readable names # Note that `get_unknown_form_name` does not require the request, which is also # not necessarily available here. So `None` is passed here. form_filter = FormsByApplicationFilter(None, domain=self.domain) for res in es_results.get('hits', {}).get('hits', []): if '_source' in res: res_source = restore_property_dict(res['_source']) res['_source'] = res_source xmlns = res['_source'].get('xmlns', None) name = None if xmlns: name = form_filter.get_unknown_form_name(xmlns, app_id=res['_source'].get('app_id', None), none_if_not_found=True) if not name: name = 'unknown' # try to fix it below but this will be the default # fall back try: if res['_source']['form'].get('@name', None): name = res['_source']['form']['@name'] else: backup = res['_source']['form'].get('#type', 'data') if backup != 'data': name = backup except (TypeError, KeyError): pass res['_source']['es_readable_name'] = name return es_results
def rows(self): case_displays = ( HNBCReportDisplay(self, restore_property_dict(self.get_case(case))) for case in self.es_results["hits"].get("hits", []) ) for disp in case_displays: yield [disp.case_link, disp.baby_name, disp.owner_display, disp.dob, disp.visit_completion, disp.delivery]
def testComputedConversion(self): """ Since we set dyanmic=True on reportxforms, need to do conversions on the computed_ properties so call conversion on computed_ dict as well, this test ensures that it's converted on change_transform :return: """ orig = { '_id': 'blank_strings', 'form': { 'case': { "@xmlns": "http://commcarehq.org/case/transaction/v2", "@date_modified": "2013-10-14T10:59:44Z", "@user_id": "someuser", "@case_id": "mycase", "index": "", "attachment": "", "create": "", "update": "", } }, 'computed_': { "mvp_indicators": { "last_muac": { "updated": "2013-02-04T21:54:28Z", "version": 1, "type": "FormDataAliasIndicatorDefinition", "multi_value": False, "value": None }, "muac": { "updated": "2013-02-04T21:54:28Z", "version": 1, "type": "FormDataAliasIndicatorDefinition", "multi_value": False, "value": { "#text": "", "@concept_id": "1343" } }, "vaccination_status": { "updated": "2013-02-04T21:54:28Z", "version": 1, "type": "FormDataAliasIndicatorDefinition", "multi_value": False, "value": "yes" }, } } } pillow = ReportXFormPillow(online=False) orig['domain'] = settings.ES_XFORM_FULL_INDEX_DOMAINS[0] for_indexing = pillow.change_transform(orig) restored = restore_property_dict(for_indexing) self.assertNotEqual(orig['computed_'], for_indexing['computed_']) self.assertEqual(orig['computed_'], restored['computed_'])
def rows(self): case_displays = (HNBCReportDisplay(self, restore_property_dict(self.get_case(case))) for case in self.es_results['hits'].get('hits', [])) for disp in case_displays: yield [ disp.case_type, disp.case_link, disp.owner_display, disp.dob, disp.visit_completion, disp.delivery, disp.pnc_status, ]
def rows(self): case_displays = (PatientTaskListReportDisplay(self, restore_property_dict(self.get_case(case))) for case in self.es_results['hits'].get('hits', [])) for disp in case_displays: yield [ disp.full_name_link, disp.name_link, disp.task_responsible, disp.status, disp.task_due, disp.last_modified, disp.task_activity, disp.task_risk_factor, disp.task_details ]
def rows(self): case_displays = (PatientListReportDisplay(self, restore_property_dict(self.get_case(case))) for case in self.es_results['hits'].get('hits', [])) for disp in case_displays: yield [ disp.edit_link, disp.case_link, disp.mrn, disp.randomization_date, disp.visit_name, disp.target_date, disp.most_recent, disp.discuss, disp.patient_info ]
def rows(self): case_displays = (HSPHCaseDisplay(self, restore_property_dict(self.get_case(case))) for case in self.es_results['hits'].get('hits', [])) for disp in case_displays: yield [ disp.region, disp.district, disp.site, disp.patient_id, disp.status, disp.case_link, disp.filter_date, disp.address, disp.allocated_to, disp.allocated_start, disp.allocated_end, disp.outside_allocated_period ]
def testConvertAndRestoreReportXFormDicts(self): pillow = ReportXFormPillow(online=False) orig = CONCEPT_XFORM orig['domain'] = settings.ES_XFORM_FULL_INDEX_DOMAINS[0] for_indexing = pillow.change_transform(orig) restored = restore_property_dict(for_indexing) #appVersion might be munged in meta, so swapping it out orig_appversion = orig['form']['meta']['appVersion'] restored_appversion = restored['form']['meta']['appVersion'] if isinstance(orig_appversion, dict): self.assertEqual(restored_appversion, orig_appversion['#text']) else: self.assertEqual(restored_appversion, orig_appversion) del(orig['form']['meta']['appVersion']) del(restored['form']['meta']['appVersion']) self.assertNotEqual(for_indexing, orig) self.assertNotEqual(for_indexing, restored) self.assertEqual(orig, restored)
def testConvertAndRestoreReportXFormDicts(self): pillow = ReportXFormPillow(online=False) orig = CONCEPT_XFORM orig['domain'] = settings.ES_XFORM_FULL_INDEX_DOMAINS[0] for_indexing = pillow.change_transform(orig) restored = restore_property_dict(for_indexing) #appVersion might be munged in meta, so swapping it out orig_appversion = orig['form']['meta']['appVersion'] restored_appversion = restored['form']['meta']['appVersion'] if isinstance(orig_appversion, dict): self.assertEqual(restored_appversion, orig_appversion['#text']) else: self.assertEqual(restored_appversion, orig_appversion) del (orig['form']['meta']['appVersion']) del (restored['form']['meta']['appVersion']) self.assertNotEqual(for_indexing, orig) self.assertNotEqual(for_indexing, restored) self.assertEqual(orig, restored)