From: Tim J. <ti...@jo...> - 2004-10-06 01:22:49
|
Hello: I came across webware when researching reportlab and the functionality of serving a pdf file on the fly. I am referencing the following URL: http://wiki.w4py.org/pdfcreationwithreportlab.html Below is the entire code for test.py #!/usr/local/bin/python import sys sys.path.append('/usr/local/lib/python2.3/site-packages/Webware') sys.path.append('/usr/lib/python2.3/site-packages') from WebKit.Page import Page from reportlab.pdfgen import canvas from reportlab.lib.units import cm class hello(Page): def writeHTML(self): c = canvas.Canvas(None) c.drawString(9*cm, 27*cm, 'Hello, World!') r = c.getpdfdata() self.response().setHeader('Content-Type', 'application/pdf') self.response().setHeader('Content-Length', str(len(r))) self.response().setHeader('Content-Disposition', 'inline; filename="hello.pdf"') self.write(r) H = hello() H.writeHTML() ## and below is the error report, other comments follow error report Traceback (most recent call last): File "test.py", line 19, in ? H.writeHTML() File "test.py", line 14, in writeHTML self.response().setHeader('Content-Type', 'application/pdf') File "WebKit/Page.py", line 95, in response AttributeError: hello instance has no attribute '_response' ## I looked at the Page class, and it has no __init__ method, ## therefore, the _response attribute is not created. What else do I need to do to initialize and instance of Page and use it properly? Pointers to documentation is welcome and invited. thanks tim -- Tim Johnson <ti...@jo...> http://www.alaska-internet-solutions.com |
From: Tim R. <ti...@pr...> - 2004-10-06 17:46:35
|
On Tue, 5 Oct 2004 17:23:10 -0800, Tim Johnson <ti...@jo...> wrote: >Hello: > I came across webware when researching reportlab and the >functionality of serving a pdf file on the fly. >I am referencing the following URL: > http://wiki.w4py.org/pdfcreationwithreportlab.html > Although I'm sure it's quite practical to do as you have started to do, I usually do my ReportLab PDF generation by linking to a straight CGI script, rather than going through WebKit. That allows me to test it from a command line more easily. Actually, it had not occurred to me to write the PDF straight from a WebKit servlet. ReportLab is an incredible package. It's too bad that HTML sucks so badly at printed out. I can generate glorious reports that display beautifully in a browser, even cross-platform, but I can't get enough control over printing. With just a few tweaks to HTML and CSS, it could be the ultimate report generation tool. >sys.path.append('/usr/local/lib/python2.3/site-packages/Webware') >sys.path.append('/usr/lib/python2.3/site-packages') Why do you have both /usr/local/lib/python2.3 and /usr/lib/python2.3? Doesn't that just result in confusion? "site-packages" is automatically added to your Python path, but only one of the two. -- - Tim Roberts, ti...@pr... Providenza & Boekelheide, Inc. |
From: Luke O. <lu...@me...> - 2004-10-06 02:55:22
|
Although it doesn't directly address using Page-derived classes outside of Webware, take a look at http://wiki.w4py.org/transactionanatomy.html In short, Page relies on several other objects from WebKit being created and available, particularly a Transaction and HTTPResponse/HTTPRequest as part of the transaction. The Page then expects the awake-respond-sleep cycle to be called, and then the output is collected from HTTPResponse. (Your specific error is because Page.awake does the initialization - because of servlet caching/reuse, it can't be in __init__.) Webware servlet classes are really not designed to be used outside of Webware, if you want to continue in this direction you'll need to dig into WebKit/Application.py to see the various initialization needed for all the supporting objects. My suggestion would be to go through the setup and run the Webware AppServer if you want to test and play with Webware servlets, I don't want to make it seem like regular development in Webware requires any sort of in-depth knowledge of how Transactions and Responses are created and manipulated by the Application. - Luke |
From: Tim J. <ti...@jo...> - 2004-10-06 03:11:09
|
* Luke Opperman <lu...@me...> [041005 19:01]: > Although it doesn't directly address using Page-derived classes outside of > Webware, take a look at http://wiki.w4py.org/transactionanatomy.html > Thanks Luke. Your answer makes a lot of sense, it appears that the example I found needed some context added. regards tim > In short, Page relies on several other objects from WebKit being created and > available, particularly a Transaction and HTTPResponse/HTTPRequest as part > of > the transaction. The Page then expects the awake-respond-sleep cycle to be > called, and then the output is collected from HTTPResponse. (Your specific > error is because Page.awake does the initialization - because of servlet > caching/reuse, it can't be in __init__.) > > Webware servlet classes are really not designed to be used outside of > Webware, > if you want to continue in this direction you'll need to dig into > WebKit/Application.py to see the various initialization needed for all the > supporting objects. > > My suggestion would be to go through the setup and run the Webware > AppServer if > you want to test and play with Webware servlets, I don't want to make it > seem > like regular development in Webware requires any sort of in-depth knowledge > of > how Transactions and Responses are created and manipulated by the > Application. > > - Luke -- Tim Johnson <ti...@jo...> http://www.alaska-internet-solutions.com |