summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Bronn <jbronn@gmail.com>2009-09-12 18:35:08 +0000
committerJustin Bronn <jbronn@gmail.com>2009-09-12 18:35:08 +0000
commit1aef132090f5717add930e5e5da2287235b85b68 (patch)
tree9948b08eec6793820e0b286a31c83e942ee6d8b0
parent677ddcbb04b85541f7b39b95541f5b46817ea510 (diff)
Fixed #11624: `render_to_kmz` no longer balks on non-ASCII data.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@11527 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/gis/shortcuts.py3
-rw-r--r--django/contrib/gis/tests/geoapp/test_regress.py11
2 files changed, 13 insertions, 1 deletions
diff --git a/django/contrib/gis/shortcuts.py b/django/contrib/gis/shortcuts.py
index e62e2b6bc8..a6fb8927d0 100644
--- a/django/contrib/gis/shortcuts.py
+++ b/django/contrib/gis/shortcuts.py
@@ -1,4 +1,5 @@
import cStringIO, zipfile
+from django.conf import settings
from django.http import HttpResponse
from django.template import loader
@@ -6,7 +7,7 @@ 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)
+ zf.writestr('doc.kml', kml.encode(settings.DEFAULT_CHARSET))
zf.close()
kmz.seek(0)
return kmz.read()
diff --git a/django/contrib/gis/tests/geoapp/test_regress.py b/django/contrib/gis/tests/geoapp/test_regress.py
index ef8d44d988..6eecfc8de4 100644
--- a/django/contrib/gis/tests/geoapp/test_regress.py
+++ b/django/contrib/gis/tests/geoapp/test_regress.py
@@ -1,6 +1,7 @@
import os, unittest
from django.contrib.gis.db.backend import SpatialBackend
from django.contrib.gis.tests.utils import no_mysql, no_oracle, no_postgis
+from django.contrib.gis.shortcuts import render_to_kmz
from models import City
class GeoRegressionTests(unittest.TestCase):
@@ -16,3 +17,13 @@ class GeoRegressionTests(unittest.TestCase):
self.assertEqual(pnt, City.objects.get(name='Pueblo').point)
City.objects.filter(name='Pueblo').update(point=bak)
self.assertEqual(bak, City.objects.get(name='Pueblo').point)
+
+ def test02_kmz(self):
+ "Testing `render_to_kmz` with non-ASCII data, see #11624."
+ name = '\xc3\x85land Islands'.decode('iso-8859-1')
+ places = [{'name' : name,
+ 'description' : name,
+ 'kml' : '<Point><coordinates>5.0,23.0</coordinates></Point>'
+ }]
+ kmz = render_to_kmz('gis/kml/placemarks.kml', {'places' : places})
+