12345678910111213141516171819202122232425262728293031323334353637383940 |
- import zipfile
- from io import BytesIO
-
- from django.conf import settings
- from django.http import HttpResponse
- from django.template import loader
-
- # NumPy supported?
- try:
- import numpy
- except ImportError:
- numpy = False
-
-
- def compress_kml(kml):
- "Return compressed KMZ from the given KML string."
- kmz = BytesIO()
- with zipfile.ZipFile(kmz, 'a', zipfile.ZIP_DEFLATED) as zf:
- zf.writestr('doc.kml', kml.encode(settings.DEFAULT_CHARSET))
- kmz.seek(0)
- return kmz.read()
-
-
- def render_to_kml(*args, **kwargs):
- "Render the response as KML (using the correct MIME type)."
- return HttpResponse(
- loader.render_to_string(*args, **kwargs),
- content_type='application/vnd.google-earth.kml+xml',
- )
-
-
- def render_to_kmz(*args, **kwargs):
- """
- Compress the KML content and return as KMZ (using the correct
- MIME type).
- """
- return HttpResponse(
- compress_kml(loader.render_to_string(*args, **kwargs)),
- content_type='application/vnd.google-earth.kmz',
- )
|