diff --git a/pylons_app/config/environment.py b/pylons_app/config/environment.py --- a/pylons_app/config/environment.py +++ b/pylons_app/config/environment.py @@ -18,14 +18,14 @@ def load_environment(global_conf, app_co """ # Pylons paths root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - paths = dict(root = root, - controllers = os.path.join(root, 'controllers'), - static_files = os.path.join(root, 'public'), - templates = [os.path.join(root, 'templates')]) + paths = dict(root=root, + controllers=os.path.join(root, 'controllers'), + static_files=os.path.join(root, 'public'), + templates=[os.path.join(root, 'templates')]) # Initialize config with the basic options - config.init_app(global_conf, app_conf, package = 'pylons_app', - template_engine = 'mako', paths = paths) + config.init_app(global_conf, app_conf, package='pylons_app', + template_engine='mako', paths=paths) config['routes.map'] = make_map() config['pylons.g'] = app_globals.Globals() @@ -33,12 +33,12 @@ def load_environment(global_conf, app_co # Create the Mako TemplateLookup, with the default auto-escaping config['pylons.g'].mako_lookup = TemplateLookup( - directories = paths['templates'], - error_handler = handle_mako_error, - module_directory = os.path.join(app_conf['cache_dir'], 'templates'), - input_encoding = 'utf-8', output_encoding = 'utf-8', - imports = ['from webhelpers.html import escape'], - default_filters = ['escape']) + directories=paths['templates'], + error_handler=handle_mako_error, + module_directory=os.path.join(app_conf['cache_dir'], 'templates'), + output_encoding='utf-8', + imports=['from webhelpers.html import escape'], + default_filters=['escape']) # CONFIGURATION OPTIONS HERE (note: all config options will override # any Pylons config options) diff --git a/pylons_app/controllers/hg.py b/pylons_app/controllers/hg.py --- a/pylons_app/controllers/hg.py +++ b/pylons_app/controllers/hg.py @@ -24,11 +24,18 @@ class HgController(BaseController): if request.environ['HTTP_ACCEPT'].find("mercurial") != -1 or \ request.environ['PATH_INFO'].find('raw-file') != -1: return response - - tmpl = ''.join(response) + try: + tmpl = u''.join(response) + template = Template(tmpl, lookup=request.environ['pylons.pylons']\ + .config['pylons.g'].mako_lookup) + + except (RuntimeError, UnicodeDecodeError): + log.info('disabling unicode due to encoding error') + response = g.hgapp(request.environ, self.start_response) + tmpl = ''.join(response) + template = Template(tmpl, lookup=request.environ['pylons.pylons']\ + .config['pylons.g'].mako_lookup, disable_unicode=True) - template = Template(tmpl, lookup=request.environ['pylons.pylons']\ - .config['pylons.g'].mako_lookup) return template.render(g=g, c=c, session=session, h=h)