summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2011-11-24 06:10:02 -0500
committerChris McDonough <chrism@plope.com>2011-11-24 06:10:02 -0500
commit8a32e380d933ba015efe4de0d11f9c5971ef9d06 (patch)
treeba1ed4cd20d09ad6e4e6624047f04f10c9b62fd0
parentfe5be1b1368a8a602a5a6151156dd465daa1ffd1 (diff)
downloadpyramid-8a32e380d933ba015efe4de0d11f9c5971ef9d06.tar.gz
pyramid-8a32e380d933ba015efe4de0d11f9c5971ef9d06.tar.bz2
pyramid-8a32e380d933ba015efe4de0d11f9c5971ef9d06.zip
require a title
-rw-r--r--pyramid/config/adapters.py5
-rw-r--r--pyramid/config/assets.py3
-rw-r--r--pyramid/config/factories.py6
-rw-r--r--pyramid/config/i18n.py5
-rw-r--r--pyramid/config/introspection.py10
-rw-r--r--pyramid/config/routes.py2
-rw-r--r--pyramid/config/views.py48
-rw-r--r--pyramid/interfaces.py2
-rw-r--r--pyramid/router.py2
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: