def dynamic_case_properties(self): """(key, value) tuples sorted by key""" from jsonobject.base import get_dynamic_properties json = self.to_json() wrapped_case = self if type(self) != GenericCommCareCase: wrapped_case = GenericCommCareCase.wrap(self._doc) # should these be removed before converting to generic? exclude = ['computed_modified_on_', 'computed_', 'doc_type', 'initial_processing_complete'] return sorted([ (key, json[key]) for key in get_dynamic_properties(wrapped_case) if re.search(r'^[a-zA-Z]', key) and key not in exclude ])
def test_init(self): from jsonobject.base import get_dynamic_properties self.assertEqual(JunkCD(c_property=1, d_property='yyy').to_json(), JunkCD({'c': 1, 'd': 'yyy'}).to_json()) x = JunkCD(non_existent_property=2) self.assertEqual(get_dynamic_properties(x), {'non_existent_property': 2}) ab = JunkAB(a_property=[1, 2, 3], b_property=JunkCD({'c': 1, 'd': 'string'})) self.assertEqual(ab.to_json(), { 'a': [1, 2, 3], 'b': { 'c': 1, 'd': 'string', } })
def _dynamic_properties(self): from jsonobject.base import get_dynamic_properties return get_dynamic_properties(self)