예제 #1
0
    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)
            }
예제 #2
0
    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
예제 #3
0
    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
예제 #4
0
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]
        ]
    )
예제 #5
0
 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)
예제 #6
0
파일: v0_4.py 프로젝트: dimagi/commcare-hq
    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)
            }
예제 #7
0
 def assertCaseProperties(self, app, case_type, expected_properties):
     properties = get_case_properties(app, [case_type])
     self.assertEqual(
         set(properties[case_type]),
         set(expected_properties),
     )
예제 #8
0
 def assertCaseProperties(self, app, case_type, expected_properties):
     properties = get_case_properties(app, [case_type])
     self.assertEqual(
         set(properties[case_type]),
         set(expected_properties),
     )