diff --git a/toolbox/handlers.py b/toolbox/handlers.py index e77837b..d4b66d2 100644 --- a/toolbox/handlers.py +++ b/toolbox/handlers.py @@ -7,7 +7,7 @@ import os from datetime import datetime from pkg_resources import resource_filename -from urllib import quote +from urllib import quote as _quote from urlparse import urlparse from util import strsplit from util import JSONEncoder @@ -15,6 +15,11 @@ from tempita import HTMLTemplate from time import time +def quote(s, safe='/'): + if isinstance(s, unicode): + s = s.encode('utf-8', 'ignore') # hope we're using utf-8! + return _quote(s, safe) + try: import json except ImportError: @@ -269,7 +274,13 @@ def match(cls, app, request): return None # get the project if it exists - project = app.model.project(request.environ['path'][0]) + projectname = request.environ['path'][0] + try: + # if its utf-8, we should try to keep it utf-8 + projectname = projectname.decode('utf-8') + except UnicodeDecodeError: + pass + project = app.model.project(projectname) if not project: return None