All pastes #1425103 Raw Edit

Untitled

public text v1 · immutable
#1425103 ·published 2009-05-17 03:08 UTC
rendered paste body
Index: cherrypy/_cpdispatch.py
===================================================================
--- cherrypy/_cpdispatch.py	(revision 2280)
+++ cherrypy/_cpdispatch.py	(working copy)
@@ -400,14 +400,20 @@
         """
         import routes
         self.full_result = full_result
-        self.controllers = {}
+        self.controller_objects = {}
+        self.controller_classes = {}
         self.mapper = routes.Mapper()
-        self.mapper.controller_scan = self.controllers.keys
+        self.mapper.controller_scan = self.controller_classes.keys
         
     def connect(self, name, route, controller, **kwargs):
-        self.controllers[name] = controller
-        self.mapper.connect(name, route, controller=name, **kwargs)
-    
+        self.controller_classes[controller.__name__] = controller
+        self.mapper.connect(name, route, controller=controller.__name__, **kwargs)
+
+    def resource(self, member_name, collection_name, controller, **kargs):
+        self.controller_classes[controller.__name__] = controller
+        self.mapper.resource(member_name, collection_name,
+                             controller=controller.__name__, **kargs)    
+
     def redirect(self, url):
         raise cherrypy.HTTPRedirect(url)
     
@@ -474,7 +480,8 @@
         handler = None
         if result:
             controller = result.get('controller', None)
-            controller = self.controllers.get(controller)
+            controller = self.controller_objects.get(controller,
+                                                     self.controller_classes[controller]())
             if controller:
                 # Get config from the controller.
                 if hasattr(controller, "_cp_config"):