def test_parse_xform_nested_repeats(self): self._publish_and_submit_new_repeats() parser = XFormInstanceParser(self.xml, self.xform) dict = parser.to_dict() expected_dict = { u'new_repeats': { u'info': { u'age': u'80', u'name': u'Adam' }, u'kids': { u'kids_details': [ { u'kids_age': u'50', u'kids_name': u'Abel' }, ], u'has_kids': u'1' }, u'web_browsers': u'chrome ie', u'gps': u'-1.2627557 36.7926442 0.0 30.0' } } self.assertEqual(dict, expected_dict) flat_dict = parser.to_flat_dict() expected_flat_dict = { u'gps': u'-1.2627557 36.7926442 0.0 30.0', u'kids/kids_details': [ { u'kids/kids_details/kids_name': u'Abel', u'kids/kids_details/kids_age': u'50' } ], u'kids/has_kids': u'1', u'info/age': u'80', u'web_browsers': u'chrome ie', u'info/name': u'Adam' } self.assertEqual(flat_dict, expected_flat_dict)
def test_multiple_media_files_on_encrypted_form(self): self._create_user_and_login() # publish our form which contains some some repeats xls_file_path = os.path.join( os.path.dirname(os.path.abspath(__file__)), "../fixtures/tutorial_encrypted/tutorial_encrypted.xls") count = XForm.objects.count() self._publish_xls_file_and_set_xform(xls_file_path) self.assertEqual(count + 1, XForm.objects.count()) # submit an instance xml_submission_file_path = os.path.join( os.path.dirname(os.path.abspath(__file__)), "../fixtures/tutorial_encrypted/instances/tutorial_encrypted.xml") self._make_submission(xml_submission_file_path) self.assertNotContains(self.response, "Multiple nodes with the same name", status_code=201) # load xml file to parse and compare xml_file = open(xml_submission_file_path) self.xml = xml_file.read() xml_file.close() parser = XFormInstanceParser(self.xml, self.xform) dict = parser.to_dict() expected_list = [{ u'file': u'1483528430996.jpg.enc' }, { u'file': u'1483528445767.jpg.enc' }] self.assertEqual(dict.get('data').get('media'), expected_list) flat_dict = parser.to_flat_dict() expected_flat_list = [{ u'media/file': u'1483528430996.jpg.enc' }, { u'media/file': u'1483528445767.jpg.enc' }] self.assertEqual(flat_dict.get('media'), expected_flat_list)
def _set_parser(self): if not hasattr(self, "_parser"): self._parser = XFormInstanceParser(self.xml, self.xform_instance.xform)
def _set_parser(self): if not hasattr(self, "_parser"): self._parser = XFormInstanceParser(self.xml, self.xform.data_dictionary())
def _set_parser(self): if not hasattr(self, "_parser"): # pylint: disable=E1101 self._parser = XFormInstanceParser(self.xml, self.xform)