Esempio n. 1
0
    def process_sql(self, doc_dict, delete=False):
        if delete or doc_dict['doc_type'] != 'XFormInstance':
            try:
                FormData.objects.get(instance_id=doc_dict['_id']).delete()
            except FormData.DoesNotExist:
                pass
            return

        doc = self.document_class.wrap(doc_dict)
        doc = ReadOnlyObject(doc)
        try:
            FormData.create_or_update_from_instance(doc)
        except InvalidDataException, e:
            # this is a less severe class of errors
            logger.info("FormDataPillow: bad update in form listener for line: %s\n%s" % (doc_dict, e))
Esempio n. 2
0
    def process_sql(self, doc_dict, delete=False):
        if delete or doc_dict['doc_type'] != 'XFormInstance':
            try:
                FormData.objects.get(instance_id=doc_dict['_id']).delete()
            except FormData.DoesNotExist:
                pass
            return

        doc = self.document_class.wrap(doc_dict)
        doc = ReadOnlyObject(doc)
        try:
            FormData.create_or_update_from_instance(doc)
        except InvalidDataException, e:
            # this is a less severe class of errors
            logger.info(
                "FormDataPillow: bad update in form listener for line: %s\n%s"
                % (doc_dict, e))
Esempio n. 3
0
    def testCreateOrUpdate(self):
        self.assertEqual(0, FormData.objects.count())

        FormData.create_or_update_from_instance(self.instance)
        self.assertEqual(1, FormData.objects.count())
        self.assertTrue(FormData.objects.all()[0].matches_exact(self.instance))

        FormData.create_or_update_from_instance(self.instance)
        self.assertEqual(1, FormData.objects.count())
        self.assertTrue(FormData.objects.all()[0].matches_exact(self.instance))

        self.instance["form"]["meta"]["deviceID"] = "UPDATED_DEVICEID"
        FormData.create_or_update_from_instance(self.instance)
        self.assertEqual(1, FormData.objects.count())
        self.assertTrue(FormData.objects.all()[0].matches_exact(self.instance))

        self.instance["form"]["meta"]["instanceID"] = "UPDATED_INSTANCEID"
        self.instance._id = "UPDATED_INSTANCEID"
        FormData.create_or_update_from_instance(self.instance)
        self.assertEqual(2, FormData.objects.count())
        self.assertTrue(FormData.objects.get(instance_id="UPDATED_INSTANCEID").matches_exact(self.instance))