diff decoupage/web.py @ 31:89a72b2fd149

merge from head
author egj@socialplanning.org
date Tue, 02 Feb 2010 18:04:02 +0000
parents 81607129a45e f306089d6def
children 527ccb76d043
line wrap: on
line diff
--- a/decoupage/web.py	Tue Feb 02 18:02:27 2010 +0000
+++ b/decoupage/web.py	Tue Feb 02 18:04:02 2010 +0000
@@ -4,6 +4,7 @@
 
 import os
 
+from contenttransformer.app import FileTypeTransformer
 from formatters import formatters
 
 from genshi.builder import Markup
@@ -62,6 +63,8 @@
         self.loader = TemplateLoader(self.template_directories, 
                                      auto_reload=self.auto_reload)
 
+        
+
     ### methods dealing with HTTP
     def __call__(self, environ, start_response):
         request = Request(environ)
@@ -76,15 +79,18 @@
                 res = self.get(request)
                 return res(environ, start_response)
             else:
-                fileserver = self.fileserver(path)
+                conf = self.conf(request.path_info.rsplit('/',1)[0])
+                if '/transformer' in conf:
+                    args = [i.split('=', 1) for i in conf['/transformer'].split(',') if '=' in i]
+                    fileserver = FileTypeTransformer(*args)
+                else:
+                    fileserver = FileApp
+                    
+                fileserver = fileserver(path)
                 return fileserver(environ, start_response)
         else:
             raise exc.HTTPNotFound()
 
-    def get_response(self, text, content_type='text/html'):
-        """construct a response to a GET request"""
-        res = Response(content_type=content_type, body=text)
-        return res
 
     def get(self, request):
         """
@@ -152,7 +158,8 @@
                 return self.fileserver(local_index)
             raise
 
-        return self.get_response(res)
+        return Response(content_type='text/html', body=res)
+
 
     ### internal methods
 
@@ -202,7 +209,7 @@
             parent_configuration = self.conf(inherit_directory)
             for key, value in parent_configuration.items():
                 if key.startswith('/') and key not in conf:
-                    conf[key] = value
+                    conf[key] = value                
 
         # cache configuration
         if not self.auto_reload: