web/lib/django/contrib/gis/shortcuts.py
changeset 0 0d40e90630ef
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/django/contrib/gis/shortcuts.py	Wed Jan 20 00:34:04 2010 +0100
@@ -0,0 +1,32 @@
+import cStringIO, zipfile
+from django.conf import settings
+from django.http import HttpResponse
+from django.template import loader
+
+def compress_kml(kml):
+    "Returns compressed KMZ from the given KML string."
+    kmz = cStringIO.StringIO()
+    zf = zipfile.ZipFile(kmz, 'a', zipfile.ZIP_DEFLATED)
+    zf.writestr('doc.kml', kml.encode(settings.DEFAULT_CHARSET))
+    zf.close()
+    kmz.seek(0)
+    return kmz.read()
+
+def render_to_kml(*args, **kwargs):
+    "Renders the response as KML (using the correct MIME type)."
+    return HttpResponse(loader.render_to_string(*args, **kwargs),
+                        mimetype='application/vnd.google-earth.kml+xml')
+
+def render_to_kmz(*args, **kwargs):
+    """
+    Compresses the KML content and returns as KMZ (using the correct 
+    MIME type).
+    """
+    return HttpResponse(compress_kml(loader.render_to_string(*args, **kwargs)),
+                        mimetype='application/vnd.google-earth.kmz')
+
+
+def render_to_text(*args, **kwargs):
+    "Renders the response using the MIME type for plain text."
+    return HttpResponse(loader.render_to_string(*args, **kwargs),
+                        mimetype='text/plain')