def dehydrate_module(self, app, module, langs): """ Convert a Module object to a JValue representation with just the good parts. NOTE: This is not a tastypie "magic"-name method to dehydrate the "module" field; there is no such field. """ try: dehydrated = {} dehydrated['case_type'] = module.case_type dehydrated['case_properties'] = get_case_properties( app, [module.case_type], defaults=['name'] )[module.case_type] dehydrated['unique_id'] = module.unique_id dehydrated['forms'] = [] for form in module.forms: form_unique_id = form.unique_id form_jvalue = { 'xmlns': form.xmlns, 'name': form.name, 'questions': form.get_questions(langs, include_translations=True), 'unique_id': form_unique_id, } dehydrated['forms'].append(form_jvalue) return dehydrated except Exception as e: return { 'error': unicode(e) }
def case_properties(self): props = set([]) for app in self.applications: prop_map = get_case_properties(app, [self.case_type], defaults=("name",)) props |= set(prop_map[self.case_type]) return props
def case_properties(self): props = set([]) for app in self.applications: prop_map = get_case_properties(app, [self.case_type], defaults=("name", )) props |= set(prop_map[self.case_type]) return props
def get_case_data_source(app, case_type): prop_map = get_case_properties(app, [case_type], defaults=list(DEFAULT_CASE_PROPERTY_DATATYPES)) return DataSourceConfiguration( domain=app.domain, referenced_doc_type='CommCareCase', table_id=_clean_table_name(app.domain, case_type), display_name=case_type, configured_filter=make_case_data_source_filter(case_type), configured_indicators=[ make_case_property_indicator(property) for property in prop_map[case_type] ] )
def search_case_property_response(self): """ Returns a dict of {case type: [case properties...]} """ result = {} for app in self.apps: case_types = list(set([m.case_type for m in app.modules])) for case_type in case_types: if case_type not in result: result[case_type] = ['name'] for properties in get_case_properties(app, [case_type]).values(): result[case_type].extend(properties) return self.clean_dict_list(result)
def dehydrate_module(app, module, langs): """ Convert a Module object to a JValue representation with just the good parts. NOTE: This is not a tastypie "magic"-name method to dehydrate the "module" field; there is no such field. """ try: dehydrated = {} dehydrated['case_type'] = module.case_type dehydrated['case_properties'] = get_case_properties( app, [module.case_type], defaults=['name'] )[module.case_type] dehydrated['unique_id'] = module.unique_id dehydrated['forms'] = [] for form in module.forms: form_unique_id = form.unique_id form_jvalue = { 'xmlns': form.xmlns, 'name': form.name, 'questions': form.get_questions( langs, include_triggers=True, include_groups=True, include_translations=True), 'unique_id': form_unique_id, } dehydrated['forms'].append(form_jvalue) return dehydrated except Exception as e: return { 'error': six.text_type(e) }
def assertCaseProperties(self, app, case_type, expected_properties): properties = get_case_properties(app, [case_type]) self.assertEqual( set(properties[case_type]), set(expected_properties), )