Hi Niphlod,   (& Paolo read this!)

halt. downloading is something the browser can decide. opening the saved 
> file is something your operating system does.
> The browser can only send the response which gives the user a choice 
> between saving and opening directly the file.
> If the user chooses "open" instead of "save" ... nothing can prevent that.

At this point the user has only clicked on the request (above code) in the 
browser and has not responded to the os open/save dialogue which 
subsequently opens.
i.e. the file has not yet been saved by the user (though a version has been 
written 'earlier' to static/temp on the local machine for use 'later' when 
the user clicks/calls response.stream() 
this is because I am developing on localhost. In production obviously the 
static/temp directory will be on a remote server. 

The code above appears to kick off two separate events, one being the 
'open/save dialogue' and the other being  'open in adobe' event.

Having said that...* I went back and looked again and I think I Paolo had 
it right .*..

import os
import sys

pdf = receipt_PDF()

rcpt_filename = "RCPT_%s_%s.pdf" % (session.rcpt_number, session.rcpt_recipient)
rcpt_filename = rcpt_filename.replace( ' ', '_' )
rcpt_filename = rcpt_filename.replace( '&', 'and' )     # TODO read somewhere 
there is a 'clean' option in web2py for filepath?

rcpt_filepath = request.folder + 'static/temp/%s'%(rcpt_filename)    # Note I 
have removed leading '/' - long story!

s_io = pdf.output(dest='S')
response.headers['Content-Disposition'] = 'attachment; filename="%s"' % 
raise HTTP(200, s_io, **response.headers)

This is doing exactly what I want - the difference being I have removed the 
xdg open request (no static/temp file creation needed if dealing with a 
stringio object ).

I need to play with it a bit more because it is now opening a 'download 
dialogue' which is perfect! (as opposed to 'open/save' dialogue) 
This is probably because I changed the system download options while 
investigating, so I need to go back over it to be sure.

It does raise another question - did I not read that downloading a stringio 
is not recommended or was it just response.stream a stringio objectis not 
recommended - is there a diff?

When I have finished checking it out I will post to confirm this is the 
solution and thanks again guys for your assistance!  




- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to