def get_all_case_properties(domain, case_types=None): # moved here to avoid circular import from corehq.apps.export.models.new import CaseExportDataSchema case_type_to_properties = {} case_properties_from_apps = all_case_properties_by_domain( domain, case_types=case_types, include_parent_properties=False) if case_types is None: case_types = get_case_types_from_apps(domain) for case_type in case_types: properties = set() schema = CaseExportDataSchema.generate_schema_from_builds( domain, None, case_type) for group_schema in schema.group_schemas: for item in group_schema.items: if item.tag: name = item.tag else: name = '/'.join([p.name for p in item.path]) properties.add(name) case_type_props_from_app = case_properties_from_apps.get(case_type, {}) properties |= set(case_type_props_from_app) case_type_to_properties[case_type] = properties return case_type_to_properties
def get_case_property_map(self): data = all_case_properties_by_domain(self.domain, include_parent_properties=False) return { 'data': data, 'success': True, }
def _get_all_case_properties(domain): # moved here to avoid circular import from corehq.apps.export.models.new import CaseExportDataSchema case_type_to_properties = {} case_properties_from_apps = all_case_properties_by_domain( domain, include_parent_properties=False) for case_type in get_case_types_from_apps(domain): properties = set() schema = CaseExportDataSchema.generate_schema_from_builds( domain, None, case_type) # only the first schema contains case properties. The others contain meta info group_schema = schema.group_schemas[0] for item in group_schema.items: if len(item.path) > 1: continue if item.tag: name = item.tag else: name = item.path[-1].name if '/' not in name: # Filter out index and parent properties as some are stored as parent/prop in item.path properties.add(name) case_type_props_from_app = case_properties_from_apps.get(case_type, {}) properties |= set(case_type_props_from_app) case_type_to_properties[case_type] = properties return case_type_to_properties
def _get_all_case_properties(domain): # moved here to avoid circular import from corehq.apps.export.models.new import CaseExportDataSchema case_type_to_properties = {} case_properties_from_apps = all_case_properties_by_domain( domain, include_parent_properties=False ) for case_type in get_case_types_from_apps(domain): properties = set() schema = CaseExportDataSchema.generate_schema_from_builds(domain, None, case_type) # only the first schema contains case properties. The others contain meta info group_schema = schema.group_schemas[0] for item in group_schema.items: if len(item.path) > 1: continue if item.tag: name = item.tag else: name = item.path[-1].name if '/' not in name: # Filter out index and parent properties as some are stored as parent/prop in item.path properties.add(name) case_type_props_from_app = case_properties_from_apps.get(case_type, {}) properties |= set(case_type_props_from_app) case_type_to_properties[case_type] = properties return case_type_to_properties
def get_flattened_case_properties(domain): all_properties_by_type = all_case_properties_by_domain( domain, include_parent_properties=False) all_properties = [{ 'name': value, 'case_type': case_type } for case_type, values in six.iteritems(all_properties_by_type) for value in values] return all_properties
def get_flattened_case_properties(domain, include_parent_properties=False): all_properties_by_type = all_case_properties_by_domain( domain, include_parent_properties=include_parent_properties ) property_counts = Counter(item for sublist in all_properties_by_type.values() for item in sublist) all_properties = [ {'name': value, 'case_type': case_type, 'count': property_counts[value]} for case_type, values in six.iteritems(all_properties_by_type) for value in values ] return all_properties
def get_flattened_case_properties(domain, include_parent_properties=False): all_properties_by_type = all_case_properties_by_domain( domain, include_parent_properties=include_parent_properties) property_counts = Counter(item for sublist in all_properties_by_type.values() for item in sublist) all_properties = [{ 'name': value, 'case_type': case_type, 'count': property_counts[value] } for case_type, values in six.iteritems(all_properties_by_type) for value in values] return all_properties