예제 #1
0
    def process_sql(self, doc_dict):
        doc = self.document_class.wrap(doc_dict)
        doc = ReadOnlyObject(doc)

        try:
            FormData.create_or_update_from_xforminstance(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))
예제 #2
0
    def process_sql(self, doc_dict):
        doc = self.document_class.wrap(doc_dict)
        doc = ReadOnlyObject(doc)

        try:
            FormData.create_or_update_from_xforminstance(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))
예제 #3
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))
예제 #4
0
 def testFromInstance(self):
     formdata = FormData.from_instance(self.instance)
     self.assertEqual(date(2010, 07, 22), formdata.time_start.date())
     self.assertEqual(date(2010, 07, 23), formdata.time_end.date())
     self.assertEqual("THIS_IS_THE_INSTANCEID", formdata.instance_id)
     self.assertEqual("THIS_IS_THE_DEVICEID", formdata.device_id)
     self.assertEqual("THIS_IS_THE_USERID", formdata.user_id)
예제 #5
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))
예제 #6
0
def get_formdata(days_ago, domain, user_id, xmlns=None, duration=1):
    now = datetime.utcnow()
    return FormData(
        domain=domain,
        user_id=user_id,
        time_end=now - timedelta(days=days_ago),
        received_on=now,
        instance_id=uuid.uuid4(),
        time_start=now,
        duration=duration * 1000,  # convert to ms
        xmlns=xmlns)
예제 #7
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))
예제 #8
0
 def testUpdate(self):
     formdata = FormData.from_instance(self.instance)
     self.instance["form"]["meta"]["deviceID"] = "UPDATED_DEVICEID"
     formdata.update(self.instance)
     self.assertEqual("UPDATED_DEVICEID", formdata.device_id)
     self.assertTrue(formdata.matches_exact(self.instance))
예제 #9
0
    def testMatches(self):
        formdata = FormData.from_instance(self.instance)
        self.assertTrue(formdata.matches_exact(self.instance))

        formdata.device_id = "UPDATED_DEVICEID"
        self.assertFalse(formdata.matches_exact(self.instance))