Actually after_render hook permits to modify the rendered page.

It gets as parameter a dictionary where the key "response" is the
response getting out from that request.
Replacing the content of that key replaces the response sent by TurboGears.

On Tue, May 22, 2012 at 8:56 PM, Matthew Boehm <[email protected]> wrote:
> I am trying to implement a PDF converter as well, but have run into some
> problems:
>
> * after_render hooked functions only receive a literal with the rendered
> result. Modifying this result/returning the modified version in the hooked
> function does not change what is written to the response object.
> * If you try writing directly to the response object, sometime after your
> function returns, the entire original response is written to the response
> object.
>
> Is there a way to modify the response's content and headers in a function
> hooked to after_render?
>
> On Monday, September 19, 2011 10:38:32 AM UTC-4, Alessandro Molina wrote:
>>
>> you can use
>> Decoration.get_decoration(controller_method).register_hook('after_render',
>> callable)
>> and callable will be execute after rendering the template with the
>> rendering result as parameter.
>>
>> On Mon, Sep 19, 2011 at 3:32 PM, León Domingo <[email protected]>
>> wrote:
>> > Hi Alessandro,
>> > And how would it be this way? I don't know exactly how "after_render"
>> > has to be used. As far as I know, you define a function with a
>> > "response" parameter and then a decorator "after_render" passing that
>> > function in.
>> >
>> > def _after_render(r):
>> >  # something to be done
>> >  r.content_type = 'application/pdf'
>> >  r.body = to_pdf(r.body)
>> >
>> > @expose('foo.html')
>> > @after_render(_after_render)
>> > def foo(self, *args, **kwargs):
>> >   return dict(....)
>> >
>> > is it correct? I was trying this way but...can I modify "response"
>> > inside "_after_render"? I thought it was not possible...
>> >
>> > Thanks
>> >
>> > León
>> >
>> > On 19 sep, 15:13, Alessandro Molina <[email protected]>
>> > wrote:
>> >> Uhm, I would suggest you to setup a after_render hook and decide if
>> >> the render result must be converted to a PDF or not.
>> >> In the case it doesn't have to be converted you can leave it go as
>> >> HTML, otherwise you can call wkhtmltopdf
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> On Sun, Sep 18, 2011 at 9:54 AM, León Domingo <[email protected]>
>> >> wrote:
>> >> > Hi,
>> >> > I've created a little function that makes use of wkhtmltopdf (http://
>> >> > code.google.com/p/wkhtmltopdf/) to get PDF content from HTML content.
>> >>
>> >> > I would like to use some controllers to get a PDF version of the HTML
>> >> > content defined in the corresponding template.
>> >>
>> >> >   @expose('foo.html')
>> >> >   def foo(self, *args, **kwargs):
>> >> >       return dict(....)
>> >>
>> >> > I've been making some experiments with a middleware class.
>> >>
>> >> >   response.content_type = 'application/pdf'
>> >> >   response.body = to_pdf(response.body)
>> >>
>> >> >   return response(environ, start_response)
>> >>
>> >> > It works but I need something to know if I have to make the
>> >> > translation or not
>> >>
>> >> >   if is_a_suitable_response:
>> >> >       response.content_type = 'application/pdf'
>> >> >       response.body = to_pdf(response.body)
>> >>
>> >> >   return response(environ, start_response)
>> >>
>> >> > and I don't know how I can "mark" the response to do so. In the other
>> >> > hand, I don't know if this is the right way to do that.
>> >>
>> >> > Thanks a lot
>> >>
>> >> > León
>> >>
>> >> > --
>> >> > You received this message because you are subscribed to the Google
>> >> > Groups "TurboGears" group.
>> >> > To post to this group, send email to [email protected].
>> >> > To unsubscribe from this group, send email to
>> >> > [email protected].
>> >> > For more options, visit this group
>> >> > athttp://groups.google.com/group/turbogears?hl=en.
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups "TurboGears" group.
>> > To post to this group, send email to [email protected].
>> > To unsubscribe from this group, send email to
>> > [email protected].
>> > For more options, visit this group at
>> > http://groups.google.com/group/turbogears?hl=en.
>> >
>> >
>
> --
> You received this message because you are subscribed to the Google Groups
> "TurboGears" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/turbogears/-/L9-eC9I7gBkJ.
>
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/turbogears?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en.

Reply via email to