[Commits] python.it commit r253 - code/pythonisti/trunk/pythonisti/geo

commit a svn.python.it commit a svn.python.it
Mar 9 Gen 2007 23:04:33 CET


Author: rhymes
Date: Tue Jan  9 23:04:27 2007
New Revision: 253

Modified:
   code/pythonisti/trunk/pythonisti/geo/google.py
   code/pythonisti/trunk/pythonisti/geo/urls.py
   code/pythonisti/trunk/pythonisti/geo/views.py
Log:
parsing the charset directly from the HTTP header

Modified: code/pythonisti/trunk/pythonisti/geo/google.py
==============================================================================
--- code/pythonisti/trunk/pythonisti/geo/google.py	(original)
+++ code/pythonisti/trunk/pythonisti/geo/google.py	Tue Jan  9 23:04:27 2007
@@ -12,14 +12,20 @@
 
 from django.conf import settings
 
-
+import re
 
 class AddressNotFound(Exception):
     pass
 
 class MultipleAddress(Exception):
     pass
-
+    
+def _get_charset(header):
+    charset_pattern = re.compile(r"charset=(.*)")
+    matches = charset_pattern.search(header)
+    if matches:
+        return matches.groups(0)[0].split(";")[0] # take the first charset only
+    return None
 
 def get_page(url):
     """Retrieve the content of the HTTP url, as an Unicode string.
@@ -29,10 +35,9 @@
 
     fp = urlopen(url)
     
-    content_type = fp.info()['content-type']
-    # TODO parse the charset
-    charset = 'utf-8'
-    print content_type
+    info = fp.info()
+    content_type = info['content-type']
+    charset = _get_charset(content_type) or "utf-8"
 
     return fp.read().decode(charset)
 

Modified: code/pythonisti/trunk/pythonisti/geo/urls.py
==============================================================================
--- code/pythonisti/trunk/pythonisti/geo/urls.py	(original)
+++ code/pythonisti/trunk/pythonisti/geo/urls.py	Tue Jan  9 23:04:27 2007
@@ -4,6 +4,6 @@
 
 
 urlpatterns = patterns('',
-    (r'^db/', views.db_view),
-    (r'^map/', views.map_view)
+    (r'^json/', views.json),
+    (r'^map/', views.map)
 )

Modified: code/pythonisti/trunk/pythonisti/geo/views.py
==============================================================================
--- code/pythonisti/trunk/pythonisti/geo/views.py	(original)
+++ code/pythonisti/trunk/pythonisti/geo/views.py	Tue Jan  9 23:04:27 2007
@@ -1,37 +1,30 @@
-# Create your views here.
 from django.template import Context, loader
 from django.http import HttpResponse
 from django.shortcuts import render_to_response
-from django.utils.simplejson import dumps, loads
+from django.utils import simplejson
 from django.conf import settings
 
 from pythonisti.geo import models
 
-
-
-def db_view(request):
+def json(request):
     locations = models.GeoLocation.objects.all()
-    content = []
     
+    content = []
     for item in locations:
         content.append({
                 'info': item.username.username,
-                'location': loads(item.geolocation)
-                })
-    
-    t = loader.get_template('geo/db.js')
-    c = Context({
-        'locations': dumps(content)
+                'location': simplejson.loads(item.geolocation)
         })
     
-    return HttpResponse(t.render(c), mimetype='text/javascript')
+    json_locations = simplejson.dumps(content)
+    return HttpResponse(json_locations, mimetype='application/json')
 
 
-def map_view(request):
+def map(request):
     context = {
         'key': settings.GOOGLE_API_KEY,
         'center': settings.MAP_CENTER,
         'zoom': settings.MAP_ZOOM
-        }
+    }
     
     return render_to_response('geo/map.xhtml', context)


Maggiori informazioni sulla lista Commits