Пример #1
0
    def test_render_with_single(self):
        renderer = GeoJsonRenderer()
        result = json.loads(renderer.render(self.contrib))

        self.assertTrue("geometry" in result)
        self.assertFalse("geometry" in result.get("location"))
Пример #2
0
    def test_render_with_many(self):
        renderer = GeoJsonRenderer()
        result = json.loads(renderer.render([self.contrib]))

        self.assertEqual(result.get("type"), "FeatureCollection")
        self.assertEqual(len(result.get("features")), 1)
Пример #3
0
    def test_render_with_none(self):
        renderer = GeoJsonRenderer()
        result = renderer.render(None)

        self.assertEqual(result, "")
Пример #4
0
    def get(self, request, urlhash, format=None):
        context = self.get_context(request, urlhash)
        export = context.get('export')

        if export and format:
            content_type = 'text/plain'

            if format == 'json':
                renderer = GeoJsonRenderer()
            elif format == 'kml':
                renderer = KmlRenderer()

            contributions = export.project.get_all_contributions(
                export.creator).filter(category=export.category)

            if export.bounding_box is not None:
                contributions = contributions.filter(
                    location__geometry__bboverlaps=export.bounding_box)

            serializer = ContributionSerializer(
                contributions,
                many=True,
                context={'user': export.creator, 'project': export.project}
            )

            protocol = 'https' if request.is_secure() else 'http'
            url = '%s://%s' % (protocol, request.get_host())

            for contribution in serializer.data:
                media = FileSerializer(
                    MediaFile.objects.filter(
                        contribution__id=contribution['id']
                    ),
                    many=True,
                    context={'user': export.creator, 'project': export.project}
                ).data

                for file in media:
                    if not file['url'].startswith('http'):
                        file['url'] = url + file['url']
                    if not file['thumbnail_url'].startswith('http'):
                        file['thumbnail_url'] = url + file['thumbnail_url']

                contribution['media'] = media

                contribution['comments'] = CommentSerializer(
                    Comment.objects.filter(
                        commentto__id=contribution['id'],
                        respondsto=None
                    ),
                    many=True,
                    context={'user': export.creator, 'project': export.project}
                ).data

            content = renderer.render(serializer.data)

            if export.isoneoff:
                export.expire()
        else:
            content = render_to_string('export_access.html', context)
            content_type = 'text/html'

        return HttpResponse(content, content_type=content_type)
Пример #5
0
    def test_render_with_many(self):
        renderer = GeoJsonRenderer()
        result = json.loads(renderer.render([self.contrib]))

        self.assertEqual(result.get('type'), 'FeatureCollection')
        self.assertEqual(len(result.get('features')), 1)
Пример #6
0
    def test_render_with_single(self):
        renderer = GeoJsonRenderer()
        result = json.loads(renderer.render(self.contrib))

        self.assertTrue('geometry' in result)
        self.assertFalse('geometry' in result.get('location'))
Пример #7
0
    def test_render_with_none(self):
        renderer = GeoJsonRenderer()
        result = renderer.render(None)

        self.assertEqual(result, '')