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

Manlio Perillo manlio_perillo a libero.it
Mar 9 Gen 2007 23:09:52 CET


commit a svn.python.it ha scritto:
> 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)
>  

Ok.

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

Questo non andava fatto.
Queste modifiche andavano fatte in un altro commit.

Inoltre non è stato modificato il template della pagine XHTML (che usa 
il vecchio db.js), quindi temo che questo codice non funzioni.



Saluti  Manlio Perillo


Maggiori informazioni sulla lista Python