summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Merickel <github@m.merickel.org>2019-04-11 21:17:30 -0500
committerGitHub <noreply@github.com>2019-04-11 21:17:30 -0500
commit8a6df4e6fd9a86467262a805be4f1541f46bddbc (patch)
tree6535f127150a373198e9805790e3a03e339e0818 /src
parent01618a1399f547fb1f89cf8b56600325b4f8d04b (diff)
parentbd51b6c3afb8bd46d37bbf77e208f2e91401b1db (diff)
downloadpyramid-8a6df4e6fd9a86467262a805be4f1541f46bddbc.tar.gz
pyramid-8a6df4e6fd9a86467262a805be4f1541f46bddbc.tar.bz2
pyramid-8a6df4e6fd9a86467262a805be4f1541f46bddbc.zip
Merge pull request #3483 from luhn/better-action-info
Improve debugging info from view_config decorator
Diffstat (limited to 'src')
-rw-r--r--src/pyramid/view.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/pyramid/view.py b/src/pyramid/view.py
index 944ad93ea..b856c309a 100644
--- a/src/pyramid/view.py
+++ b/src/pyramid/view.py
@@ -1,5 +1,6 @@
import itertools
import sys
+import inspect
import venusian
@@ -216,6 +217,13 @@ class view_config(object):
if settings.get('context') is None:
settings['context'] = settings['for_']
self.__dict__.update(settings)
+ self._get_info()
+
+ def _get_info(self):
+ depth = self.__dict__.get('_depth', 0)
+ frameinfo = inspect.stack()[depth + 2]
+ sourceline = frameinfo[4][0].strip()
+ self._info = frameinfo[1], frameinfo[2], frameinfo[3], sourceline
def __call__(self, wrapped):
settings = self.__dict__.copy()
@@ -237,14 +245,13 @@ class view_config(object):
if settings.get('attr') is None:
settings['attr'] = wrapped.__name__
- settings['_info'] = info.codeinfo # fbo "action_method"
return wrapped
bfg_view = view_config # bw compat (forever)
-class view_defaults(view_config):
+def view_defaults(**settings):
""" A class :term:`decorator` which, when applied to a class, will
provide defaults for all view configurations that use the class. This
decorator accepts all the arguments accepted by
@@ -253,10 +260,12 @@ class view_defaults(view_config):
See :ref:`view_defaults` for more information.
"""
- def __call__(self, wrapped):
- wrapped.__view_defaults__ = self.__dict__.copy()
+ def wrap(wrapped):
+ wrapped.__view_defaults__ = settings
return wrapped
+ return wrap
+
class AppendSlashNotFoundViewFactory(object):
""" There can only be one :term:`Not Found view` in any