changeset 32:f93b523c0be3

dirty fix for multiple file encodings,
author Marcin Kuzminski <marcin@python-blog.com>
date Fri, 05 Mar 2010 01:14:30 +0100
parents 2963f2894a7a
children 22b2234e51cd
files pylons_app/config/environment.py pylons_app/controllers/hg.py
diffstat 2 files changed, 23 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/pylons_app/config/environment.py	Thu Mar 04 23:13:12 2010 +0100
+++ b/pylons_app/config/environment.py	Fri Mar 05 01:14:30 2010 +0100
@@ -18,14 +18,14 @@
     """
     # 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 @@
 
     # 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)
--- a/pylons_app/controllers/hg.py	Thu Mar 04 23:13:12 2010 +0100
+++ b/pylons_app/controllers/hg.py	Fri Mar 05 01:14:30 2010 +0100
@@ -24,11 +24,18 @@
         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)