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.
| | |
| | | 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)),] |
| | |
| | | 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( |
| | |
| | | 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, |