def __init__(self, controller, mapper=None): if not mapper: mapper = routes.Mapper() mapper.resource("test", "tests", controller=os_wsgi.ResourceV21(controller)) super(TestRouterV21, self).__init__(mapper)
def _create_controller(main_controller, controller_list, action_controller_list): """This is a helper method to create controller with a list of extended controller. This is for backward compatible with old extension interface. Finally, the controller for the same resource will be merged into single one controller. """ controller = wsgi.ResourceV21(main_controller()) for ctl in controller_list: controller.register_extensions(ctl()) for ctl in action_controller_list: controller.register_actions(ctl()) return controller
def _register_resources(self, ext, mapper): """Register resources defined by the extensions Extensions define what resources they want to add through a get_resources function """ handler = ext.obj LOG.debug("Running _register_resources on %s", ext.obj) for resource in handler.get_resources(): LOG.debug('Extended resource: %s', resource.collection) inherits = None if resource.inherits: inherits = self.resources.get(resource.inherits) if not resource.controller: resource.controller = inherits.controller wsgi_resource = wsgi.ResourceV21(resource.controller, inherits=inherits) self.resources[resource.collection] = wsgi_resource kargs = dict( controller=wsgi_resource, collection=resource.collection_actions, member=resource.member_actions) if resource.parent: kargs['parent_resource'] = resource.parent # non core-API plugins use the collection name as the # member name, but the core-API plugins use the # singular/plural convention for member/collection names if resource.member_name: member_name = resource.member_name else: member_name = resource.collection mapper.resource(member_name, resource.collection, **kargs) if resource.custom_routes_fn: resource.custom_routes_fn(mapper, wsgi_resource)