Bert JW Regeer
2015-10-21 a3794dc4ae90205f88652971d441c4db2bdd04da
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.
1 files modified
8 ■■■■ changed files
pyramid/config/views.py 8 ●●●● patch | view | raw | blame | history
pyramid/config/views.py
@@ -1015,8 +1015,7 @@
    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 @@
    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 @@
            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,