From 8a32e380d933ba015efe4de0d11f9c5971ef9d06 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Thu, 24 Nov 2011 06:10:02 -0500 Subject: require a title --- pyramid/config/adapters.py | 5 +++-- pyramid/config/assets.py | 3 ++- pyramid/config/factories.py | 6 +++--- pyramid/config/i18n.py | 5 +++-- pyramid/config/introspection.py | 10 ++------- pyramid/config/routes.py | 2 +- pyramid/config/views.py | 48 +++++++++++++++++++++++++++++++---------- pyramid/interfaces.py | 2 +- pyramid/router.py | 2 +- 9 files changed, 53 insertions(+), 30 deletions(-) diff --git a/pyramid/config/adapters.py b/pyramid/config/adapters.py index 9efe29848..df6b64fa8 100644 --- a/pyramid/config/adapters.py +++ b/pyramid/config/adapters.py @@ -27,7 +27,7 @@ class AdaptersConfiguratorMixin(object): iface = (iface,) def register(): self.registry.registerHandler(subscriber, iface) - intr = self.introspectable('subscriber', id(subscriber)) + intr = self.introspectable('subscriber', id(subscriber), 'subscriber') intr['subscriber'] = subscriber intr['interfaces'] = iface self.action(None, register, introspectables=(intr,)) @@ -56,7 +56,8 @@ class AdaptersConfiguratorMixin(object): else: reg.registerAdapter(adapter, (type_or_iface,), IResponse) discriminator = (IResponse, type_or_iface) - intr = self.introspectable('response adapter', discriminator) + intr = self.introspectable('response adapter', discriminator, + 'response adapter') intr['adapter'] = adapter intr['type'] = type_or_iface self.action(discriminator, register, introspectables=(intr,)) diff --git a/pyramid/config/assets.py b/pyramid/config/assets.py index 42f36fc22..b37f11865 100644 --- a/pyramid/config/assets.py +++ b/pyramid/config/assets.py @@ -238,7 +238,8 @@ class AssetsConfiguratorMixin(object): intr = self.introspectable( 'asset override', - (package, override_package, path, override_prefix) + (package, override_package, path, override_prefix), + 'asset override', ) intr['package'] = package intr['override_package'] = package diff --git a/pyramid/config/factories.py b/pyramid/config/factories.py index 1b06a6b60..c557ff72e 100644 --- a/pyramid/config/factories.py +++ b/pyramid/config/factories.py @@ -27,7 +27,7 @@ class FactoriesConfiguratorMixin(object): self.registry.registerUtility(factory, IRootFactory) self.registry.registerUtility(factory, IDefaultRootFactory) # b/c - intr = self.introspectable('root factory', None) + intr = self.introspectable('root factory', None, 'root factory') intr['factory'] = factory self.action(IRootFactory, register, introspectables=(intr,)) @@ -49,7 +49,7 @@ class FactoriesConfiguratorMixin(object): session_factory = self.maybe_dotted(session_factory) def register(): self.registry.registerUtility(session_factory, ISessionFactory) - intr = self.introspectable('session factory', None) + intr = self.introspectable('session factory', None, 'session factory') intr['factory'] = session_factory self.action(ISessionFactory, register, introspectables=(intr,)) @@ -72,7 +72,7 @@ class FactoriesConfiguratorMixin(object): factory = self.maybe_dotted(factory) def register(): self.registry.registerUtility(factory, IRequestFactory) - intr = self.introspectable('request factory', None) + intr = self.introspectable('request factory', None, 'request factory') intr['factory'] = factory self.action(IRequestFactory, register, introspectables=(intr,)) diff --git a/pyramid/config/i18n.py b/pyramid/config/i18n.py index d7875f56b..5b60f1d99 100644 --- a/pyramid/config/i18n.py +++ b/pyramid/config/i18n.py @@ -38,7 +38,8 @@ class I18NConfiguratorMixin(object): """ def register(): self._set_locale_negotiator(negotiator) - intr = self.introspectable('locale negotiator', None) + intr = self.introspectable('locale negotiator', None, + 'locale negotiator') intr['negotiator'] = negotiator self.action(ILocaleNegotiator, register, introspectables=(intr,)) @@ -86,7 +87,7 @@ class I18NConfiguratorMixin(object): if not os.path.isdir(os.path.realpath(directory)): raise ConfigurationError('"%s" is not a directory' % directory) - intr = self.introspectable('translation directory', directory) + intr = self.introspectable('translation directory', directory, spec) intr['directory'] = directory introspectables.append(intr) directories.append(directory) diff --git a/pyramid/config/introspection.py b/pyramid/config/introspection.py index 18e9f94b1..1d766fb5d 100644 --- a/pyramid/config/introspection.py +++ b/pyramid/config/introspection.py @@ -107,9 +107,10 @@ class Introspectable(dict): order = 0 # mutated by .add/.add_intr action_info = '' - def __init__(self, category_name, discriminator): + def __init__(self, category_name, discriminator, title): self.category_name = category_name self.discriminator = discriminator + self.title = title self.relations = [] self.unrelations = [] @@ -138,13 +139,6 @@ class Introspectable(dict): def related(self, introspector): return introspector.related(self) - def text(self): - result = [repr(self.discriminator)] - for k, v in self.items(): - result.append('%s: %s' % (k, v)) - result.append('action_info: %s' % (self.action_info,)) - return '\n'.join(result) - def __hash__(self): return hash((self.category_name,) + (self.discriminator,)) diff --git a/pyramid/config/routes.py b/pyramid/config/routes.py index 2e5f617af..d4e8a94ab 100644 --- a/pyramid/config/routes.py +++ b/pyramid/config/routes.py @@ -365,7 +365,7 @@ class RoutesConfiguratorMixin(object): mapper = self.get_routes_mapper() - intr = self.introspectable('route', name) + intr = self.introspectable('route', name, name) intr['name'] = name intr['pattern'] = pattern intr['factory'] = factory diff --git a/pyramid/config/views.py b/pyramid/config/views.py index 4f11ed1ea..df0a64231 100644 --- a/pyramid/config/views.py +++ b/pyramid/config/views.py @@ -924,6 +924,34 @@ class ViewsConfiguratorMixin(object): name=renderer, package=self.package, registry = self.registry) + introspectables = [] + discriminator = [ + 'view', context, name, request_type, IView, containment, + request_param, request_method, route_name, attr, + xhr, accept, header, path_info, match_param] + discriminator.extend(sorted([hash(x) for x in custom_predicates])) + discriminator = tuple(discriminator) + view_intr = self.introspectable('view', discriminator, 'view') + view_intr.update( + dict(name=name, + context=context, + containment=containment, + request_param=request_param, + request_method=request_method, + route_name=route_name, + attr=attr, + xhr=xhr, + accept=accept, + header=header, + path_info=path_info, + match_param=match_param, + callable=view, + mapper=mapper, + decorator=decorator, + ) + ) + introspectables.append(view_intr) + def register(permission=permission, renderer=renderer): request_iface = IRequest if route_name is not None: @@ -965,6 +993,7 @@ class ViewsConfiguratorMixin(object): decorator=decorator, http_cache=http_cache) derived_view = deriver(view) + view_intr['derived_callable'] = derived_view registered = self.registry.adapters.registered @@ -1062,23 +1091,20 @@ class ViewsConfiguratorMixin(object): (IExceptionViewClassifier, request_iface, context), IMultiView, name=name) - discriminator = [ - 'view', context, name, request_type, IView, containment, - request_param, request_method, route_name, attr, - xhr, accept, header, path_info, match_param] - discriminator.extend(sorted([hash(x) for x in custom_predicates])) - discriminator = tuple(discriminator) - introspectables = [] - view_intr = self.introspectable('view', discriminator) - introspectables.append(view_intr) if route_name: view_intr.relate('route', route_name) # see add_route if renderer is not None and renderer.name and '.' in renderer.name: - tmpl_intr = self.introspectable('template', discriminator) + tmpl_intr = self.introspectable('template', discriminator, + renderer.name) tmpl_intr.relate('view', discriminator) + tmpl_intr['name'] = renderer.name + tmpl_intr['type'] = renderer.type + tmpl_intr['renderer'] = renderer introspectables.append(tmpl_intr) if permission is not None: - perm_intr = self.introspectable('permission', permission) + perm_intr = self.introspectable('permission', permission, + permission) + perm_intr['value'] = permission perm_intr.relate('view', discriminator) introspectables.append(perm_intr) self.action(discriminator, register, introspectables=introspectables) diff --git a/pyramid/interfaces.py b/pyramid/interfaces.py index 572f96908..fd66ebca5 100644 --- a/pyramid/interfaces.py +++ b/pyramid/interfaces.py @@ -871,7 +871,7 @@ class IIntrospector(Interface): def get(category_name, discriminator, default=None): """ Get the IIntrospectable related to the category_name and the discriminator (or discriminator hash) ``discriminator``. If it does - not exist in the introspector, return ``default`` """ + not exist in the introspector, return the value of ``default`` """ def get_category(category_name, sort_fn=None): """ Get a sequence of dictionaries in the form diff --git a/pyramid/router.py b/pyramid/router.py index fb309eb03..fdb55779b 100644 --- a/pyramid/router.py +++ b/pyramid/router.py @@ -178,7 +178,7 @@ class Router(object): if request.response_callbacks: request._process_response_callbacks(response) - + return response(request.environ, start_response) finally: -- cgit v1.2.3