Exemplo n.º 1
0
 def test_lookup_path(self):
     doc = {
         u'fruits': u'carrot guava',
         u'end': u'2015-12-17T11:09:56.000+03:00',
         u'start': u'2015-12-17T11:08:41.000+03:00',
         u'points': [
             {
                 u'points/point': u'-13.859414 27.995911 0 0'
             },
             {
                 u'points/point': u'-12.897489 30.27832 0 0'
             }
         ],
         u'_xform_id_string': u'gps_in_repeats',
         u'meta/instanceID':
         u'uuid:340f7fe7-5d8e-451b-891f-09c8b3b44679'
     }
     fruits = list(get_values_matching_key(doc, 'fruits'))
     self.assertEqual(fruits, ['carrot guava'])
     points = list(get_values_matching_key(doc, 'points/point'))
     self.assertEqual(
         points,
         [
             u'-13.859414 27.995911 0 0',
             u'-12.897489 30.27832 0 0'
         ]
     )
Exemplo n.º 2
0
def update_instance_attachment_tracking(instance):
    """
    Takes an Instance object and updates attachment tracking fields
    """
    num_media = 0
    media_xpaths = instance.xform.get_media_survey_xpaths()
    for media_xpath in media_xpaths:
        num_media += len([
            x
            for x in get_values_matching_key(instance.get_dict(), media_xpath)
        ])
    instance.total_media = num_media
    instance.media_count = instance.attachments.count()
    instance.media_all_received = instance.media_count == \
        instance.total_media
    instance.save(
        update_fields=['total_media', 'media_count', 'media_all_received'])
Exemplo n.º 3
0
    def _set_geom(self):
        xform = self.xform
        geo_xpaths = xform.geopoint_xpaths()
        doc = self.get_dict()
        points = []

        if len(geo_xpaths):
            for xpath in geo_xpaths:
                for gps in get_values_matching_key(doc, xpath):
                    try:
                        geometry = [float(s) for s in gps.split()]
                        lat, lng = geometry[0:2]
                        points.append(Point(lng, lat))
                    except ValueError:
                        return

            if not xform.instances_with_geopoints and len(points):
                xform.instances_with_geopoints = True
                xform.save()

            self.geom = GeometryCollection(points)
Exemplo n.º 4
0
    def _set_geom(self):
        # pylint: disable=no-member
        xform = self.xform
        geo_xpaths = xform.geopoint_xpaths()
        doc = self.get_dict()
        points = []

        if geo_xpaths:
            for xpath in geo_xpaths:
                for gps in get_values_matching_key(doc, xpath):
                    try:
                        geometry = [float(s) for s in gps.split()]
                        lat, lng = geometry[0:2]
                        points.append(Point(lng, lat))
                    except ValueError:
                        return

            if not xform.instances_with_geopoints and len(points):
                xform.instances_with_geopoints = True
                xform.save()

            self.geom = GeometryCollection(points)
Exemplo n.º 5
0
    def get_expected_media(self):
        """
        Returns a list of expected media files from the submission data.
        """
        if not hasattr(self, '_expected_media'):
            # pylint: disable=E1101
            data = self.get_dict()
            media_list = []
            if 'encryptedXmlFile' in data and self.xform.encrypted:
                media_list.append(data['encryptedXmlFile'])
                if 'media' in data:
                    # pylint: disable=E1101
                    media_list.extend([i['media/file'] for i in data['media']])
            else:
                media_xpaths = (self.xform.get_media_survey_xpaths() +
                                self.xform.get_osm_survey_xpaths())
                for media_xpath in media_xpaths:
                    media_list.extend(
                        get_values_matching_key(data, media_xpath))
            # pylint: disable=attribute-defined-outside-init
            self._expected_media = list(set(media_list))

        return self._expected_media
Exemplo n.º 6
0
    def get_expected_media(self):
        """
        Returns a list of expected media files from the submission data.
        """
        if not hasattr(self, '_expected_media'):
            # pylint: disable=no-member
            data = self.get_dict()
            media_list = []
            if 'encryptedXmlFile' in data and self.xform.encrypted:
                media_list.append(data['encryptedXmlFile'])
                if 'media' in data:
                    # pylint: disable=no-member
                    media_list.extend([i['media/file'] for i in data['media']])
            else:
                media_xpaths = (self.xform.get_media_survey_xpaths() +
                                self.xform.get_osm_survey_xpaths())
                for media_xpath in media_xpaths:
                    media_list.extend(
                        get_values_matching_key(data, media_xpath))
            # pylint: disable=attribute-defined-outside-init
            self._expected_media = list(set(media_list))

        return self._expected_media