app/django/contrib/gis/shortcuts.py
author Todd Larsen <tlarsen@google.com>
Wed, 15 Oct 2008 21:27:47 +0000
changeset 347 52676c696cd4
parent 323 ff1a9aa48cfd
permissions -rw-r--r--
First phase of making the / (site/home) view generic enough to use it for Sponsor "home" page, Program "home" page, Organization "home" page, etc. when combined with HomeSettings. First phase of addressing this issue: http://code.google.com/p/soc/issues/detail?id=64 by factoring "Site Settings" apart from the site/home stuff. Patch by: Todd Larsen Review by: Pawel Solyga Review URL: http://codereviews.googleopensourceprograms.com/1405

import cStringIO, zipfile
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, False)
    zf.writestr('doc.kml', kml)
    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 kml')

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')