[Zope3-Users] substitute for deprecated response.write()?
Adam Summers
adam at 4js.com.au
Wed Dec 28 11:23:46 EST 2005
Hi,
I was having a look at Phillipp's fabulous book (thanks!), and came
across the code for publishing a PDF document to the browser (this is
slightly modified from the book):
from zope.app import zapi
from zope.app.publisher.browser import BrowserView
from ccard.pdf.interfaces import IPDFPresentation
class PDFView(BrowserView):
def __call__(self):
pdf = zapi.getViewProviding(self.context, IPDFPresentation,
self.request)
filename = zapi.name(self.context) + '.pdf'
response = self.request.response
response.setHeader('Context-Disposition', 'attachment; filename=%s'
% filena
me)
response.setHeader('Content=Type', 'application/pdf')
response.setHeader('Content-Length', len(pdf.data))
response.write(pdf.data)
However, these days I get the error:
2005-12-28T15:29:56 ERROR SiteError
http://localhost:8080/++skin++Boston/t2/Cred
itCard/pdf
Traceback (most recent call last):
File "/home/Adam/z3/Zope3/src/zope/publisher/publish.py", line 138, in
publish
result = publication.callObject(request, object)
File
"/home/Adam/z3/Zope3/src/zope/app/publication/zopepublication.py", line 1
61, in callObject
return mapply(ob, request.getPositionalArguments(), request)
File "/home/Adam/z3/Zope3/src/zope/publisher/publish.py", line 113, in
mapply
return debug_call(object, args)
File "/home/Adam/z3/Zope3/src/zope/publisher/publish.py", line 119, in
debug_c
all
return object(*args)
File "/home/Adam/z3/products/ccard/pdf/browser.py", line 15, in __call__
response.write(pdf.data)
AttributeError: 'BrowserResponse' object has no attribute 'write'
What is the correct technique, now that BrowserResponse does not have
write()
TIA, and Happy New Year
Adam
More information about the Zope3-users
mailing list