From: Fionn B. <Fio...@un...> - 2001-08-10 15:29:09
|
This is probably not something new, but I'd really like to know how to do it: I have seen it in the vorbis "examples" but not how they did it - I want to have all code in one (or more) specific directories outside the Webware tree (but in the file tree of the site that they belong to). What do I have to do so that Webware finds them properly when I "extend" them from PSP pages? The is one more, not exactly related to the first one: I have a PSP test page deployed in the root Web Server directory (/opt/www in this case) and have it accessed through a web browser using mod_webkit and a PSP Handler. When I put the following line into the .psp file: <%= self.request().serverURL() %> I get the following output in the browser: localhost/testform.psp/opt/www/testform.psp - consequently unless I specify <FORM> tags with the correct ACTION="/testform.psp" path, Webware rewrites it to ACTION="testform.psp/opt/www/testform.psp" which obviously can not be found when the form is being submitted and leads to an error. I have played a lot with settings but could not get rid of this. What do I have to do to fix this? With kind regards, Fionn |
From: Geoff T. <gtalvola@NameConnector.com> - 2001-08-13 19:02:40
|
At 05:25 PM 8/10/01 +0200, Fionn Behrens wrote: >This is probably not something new, but I'd really like to know how to do it: >I have seen it in the vorbis "examples" but not how they did it - >I want to have all code in one (or more) specific directories outside the >Webware tree (but in the file tree of the site that they belong to). What do I >have to do so that Webware finds them properly when I "extend" them from PSP >pages? If you're using contexts, then you can make an __init__.py in your context that augments sys.path with the directories you need. The __init__.py's for all contexts get imported when the appserver starts up, so that's a good place to put initialization that's needed for a particular context. If you're talking about using the psp-handler support in mod_webkit then this might not work since you won't necessarily have any contexts, and I don't think the psp-handler code looks for an __init__.py. >The is one more, not exactly related to the first one: > >I have a PSP test page deployed in the root Web Server directory (/opt/www in >this case) and have it accessed through a web browser using mod_webkit and a >PSP Handler. When I put the following line into the .psp file: > ><%= self.request().serverURL() %> > >I get the following output in the browser: > >localhost/testform.psp/opt/www/testform.psp > >- consequently unless I specify <FORM> tags with the correct >ACTION="/testform.psp" path, Webware rewrites it >to ACTION="testform.psp/opt/www/testform.psp" which obviously can not be found >when the form is being submitted and leads to an error. I have played a lot >with settings but could not get rid of this. What do I have to do to fix this? How does Webware "rewrite" your path? I don't know what you're referring to here. It does sound like serverURL() has a bug here -- I'm just not clear on why that messes up your forms. -- - Geoff Talvola gtalvola@NameConnector.com |
From: Jay L. <js...@js...> - 2001-08-14 02:53:49
|
On 10 Aug 2001 17:25:32 +0200, Fionn Behrens wrote: > > > This is probably not something new, but I'd really like to know how to do it: > I have seen it in the vorbis "examples" but not how they did it - > I want to have all code in one (or more) specific directories outside the > Webware tree (but in the file tree of the site that they belong to). What do I > have to do so that Webware finds them properly when I "extend" them from PSP > pages? > You can just put your base pages in regular modules anywhere in the python path. One way that I do this is to have my context structured with multiple directories at the root, including a config directory and a directory for extra modules that are not servlets. When a context is initialized, WebKit checks the context to see if it is a package. If it is, Application will import it and try to call a function named 'ContextInitialize', and it will pass that function 2 arguments, the Application object, and the path where the context package is located. That function can do any necessary setup for the context. That function can also tell the Application what directory to treat as the "root" of the context for serving pages. It does this by returning a dictionary of values. Only one key is looked for in that dictionary right now, and that is "ContentLocation". If a dictionary is returned that contains that key, then the value of that key will be treated as the root of the context for serving content. So, my directory structure is ContextRoot __init__.py Content index.psp Configuration Cans Modules __init__.py MyUtilityModules.py MyPSPBaseClasses.py and there is a file named __init__.py in ContextRoot that has a function "def ContextInitialize(app, contextDir)" which returns a dictionary: {"ContentDirectory":os.path.join(contextDir, 'Content')} I put any custom PSP base classes in the Modules directory, and since the whole context is a package, I can refer to them in my PSP pages as "ContextRoot.Modules.whatever". That's one way to do it, at least. Jay |
From: Jay L. <js...@js...> - 2001-08-14 03:10:05
|
Jay Love wrote: > >and there is a file named __init__.py in ContextRoot that has a function >"def ContextInitialize(app, contextDir)" which returns a dictionary: >{"ContentDirectory":os.path.join(contextDir, 'Content')} > Whoops, that dictionary key should be 'ContentLocation', not 'ContentDirectory'. Jay |