From a3794dc4ae90205f88652971d441c4db2bdd04da Mon Sep 17 00:00:00 2001 From: Bert JW Regeer Date: Tue, 20 Oct 2015 22:47:44 -0600 Subject: rendered_view is now part of the pipeline This means that it can be overriden, and is no longer static. With great power comes great responsibility... This also allows the user to insert view derivations over the rendered_view. This would allow the same sort of functionality as the BeforeRenderer event, by allowing the derivation to modify the Response/dictionary that the view returned. --- pyramid/config/views.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pyramid/config/views.py b/pyramid/config/views.py index 0d6f3c43f..3a278a94f 100644 --- a/pyramid/config/views.py +++ b/pyramid/config/views.py @@ -1015,8 +1015,7 @@ class ViewsConfiguratorMixin(object): def _apply_view_derivations(self, view, **kw): d = pyramid.config.derivations # These inner derivations have fixed order - inner_derivers = [('mapped_view', (d.mapped_view, None)), - ('rendered_view', (d.rendered_view, None))] + inner_derivers = [('mapped_view', (d.mapped_view, None))] outer_derivers = [('predicated_view', (d.predicated_view, None)), ('attr_wrapped_view', (d.attr_wrapped_view, None)),] @@ -1079,6 +1078,9 @@ class ViewsConfiguratorMixin(object): def add_view_derivation(self, name, factory, default, under=None, over=None): + if under is None and over is None: + over = 'decorated_view' + factory = self.maybe_dotted(factory) discriminator = ('view option', name) intr = self.introspectable( @@ -1115,6 +1117,8 @@ class ViewsConfiguratorMixin(object): self.add_view_derivation(name, deriver, default=None, under=after) after = name + self.add_view_derivation('rendered_view', d.rendered_view, default=None, under=pyramid.util.FIRST, over='decorated_view') + def derive_view(self, view, attr=None, renderer=None): """ Create a :term:`view callable` using the function, instance, -- cgit v1.2.3