rendered paste bodyIndex: 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"):