예제 #1
0
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
예제 #2
0
 def get_case_property_map(self):
     data = all_case_properties_by_domain(self.domain,
         include_parent_properties=False)
     return {
         'data': data,
         'success': True,
     }
예제 #3
0
파일: util.py 프로젝트: caktus/commcare-hq
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
예제 #4
0
파일: util.py 프로젝트: dimagi/commcare-hq
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
예제 #5
0
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
예제 #6
0
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
예제 #7
0
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