web/lib/django/contrib/gis/shortcuts.py
changeset 38 77b6da96e6f1
parent 0 0d40e90630ef
equal deleted inserted replaced
37:8d941af65caf 38:77b6da96e6f1
       
     1 import cStringIO, zipfile
       
     2 from django.conf import settings
       
     3 from django.http import HttpResponse
       
     4 from django.template import loader
       
     5 
       
     6 def compress_kml(kml):
       
     7     "Returns compressed KMZ from the given KML string."
       
     8     kmz = cStringIO.StringIO()
       
     9     zf = zipfile.ZipFile(kmz, 'a', zipfile.ZIP_DEFLATED)
       
    10     zf.writestr('doc.kml', kml.encode(settings.DEFAULT_CHARSET))
       
    11     zf.close()
       
    12     kmz.seek(0)
       
    13     return kmz.read()
       
    14 
       
    15 def render_to_kml(*args, **kwargs):
       
    16     "Renders the response as KML (using the correct MIME type)."
       
    17     return HttpResponse(loader.render_to_string(*args, **kwargs),
       
    18                         mimetype='application/vnd.google-earth.kml+xml')
       
    19 
       
    20 def render_to_kmz(*args, **kwargs):
       
    21     """
       
    22     Compresses the KML content and returns as KMZ (using the correct 
       
    23     MIME type).
       
    24     """
       
    25     return HttpResponse(compress_kml(loader.render_to_string(*args, **kwargs)),
       
    26                         mimetype='application/vnd.google-earth.kmz')
       
    27 
       
    28 
       
    29 def render_to_text(*args, **kwargs):
       
    30     "Renders the response using the MIME type for plain text."
       
    31     return HttpResponse(loader.render_to_string(*args, **kwargs),
       
    32                         mimetype='text/plain')