From: Randall S. <ra...@tn...> - 2003-05-19 22:41:09
|
I'm trying to configure webware to use the html validation. I've installed the wdg validation software and now I'm stuck on the SitePage configuration. I'm new to Python and Webware and probably just showing my ignorance, but here is an explanation of my problem. When I override the writeBodyParts method like this: def writeBodyParts(self): Page.writeBodyParts() self.validateHTML() I get this error when viewing a page that uses SitePage: TypeError: unbound method writeBodyParts() must be called with Page instance as first argument (got nothing instead) The error makes sense. The method expects and instance. But if I feed it an instance (self), it will loop forever. ??? Here is my SitePage (actually called StarkPage): from WebKit.Page import Page class StarkPage(Page): def writeDocType(self): self.writeln('''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">''') def writeBodyParts(self): Page.writeBodyParts() self.validateHTML('</body></html>') And here is the psp using it: <%@page extends="StarkPage"%> <%@page method="writeContent"%> <psp:method name="title">return "StarkVegas.Com"</psp:method> <strong>StarkVegas.Com</strong> <br /> <font> that? I would appreciate any help. Thanks Randall |
From: Randall S. <ra...@tn...> - 2003-05-19 05:44:52
|
I'm trying to configure webware to use the html validation. I've installed the wdg validation software and now I'm stuck on the SitePage configuration. I'm new to Python and Webware and probably just showing my ignorance, but here is an explanation of my problem. When I override the writeBodyParts method like this: def writeBodyParts(self): Page.writeBodyParts() self.validateHTML() I get this error when viewing a page that uses SitePage: TypeError: unbound method writeBodyParts() must be called with Page instance as first argument (got nothing instead) The error makes sense. The method expects and instance. But if I feed it an instance (self), it will loop forever. ??? Here is my SitePage (actually called StarkPage): from WebKit.Page import Page class StarkPage(Page): def writeDocType(self): self.writeln('''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">''') def writeBodyParts(self): Page.writeBodyParts() self.validateHTML('</body></html>') And here is the psp using it: <%@page extends="StarkPage"%> <%@page method="writeContent"%> <psp:method name="title">return "StarkVegas.Com"</psp:method> <strong>StarkVegas.Com</strong> <br /> <font> that? I would appreciate any help. Thanks Randall |
From: Ian B. <ia...@co...> - 2003-05-19 22:50:11
|
On Mon, 2003-05-19 at 17:41, Randall Smith wrote: > I'm trying to configure webware to use the html validation. I've > installed the wdg validation software and now I'm stuck on the SitePage > configuration. I'm new to Python and Webware and probably just showing > my ignorance, but here is an explanation of my problem. > > When I override the writeBodyParts method like this: > > def writeBodyParts(self): > Page.writeBodyParts() > self.validateHTML() > > I get this error when viewing a page that uses SitePage: > > > TypeError: unbound method writeBodyParts() must be called with Page > instance as first argument (got nothing instead) > > The error makes sense. The method expects and instance. But if I feed > it an instance (self), it will loop forever. ??? Really? If you do: def writeBodyParts(self): Page.writeBodyParts(self) self.validateHTML() ?? |
From: Randall S. <ra...@tn...> - 2003-05-20 01:35:06
|
Ian Bicking wrote: >On Mon, 2003-05-19 at 17:41, Randall Smith wrote: > > >>I'm trying to configure webware to use the html validation. I've >>installed the wdg validation software and now I'm stuck on the SitePage >>configuration. I'm new to Python and Webware and probably just showing >>my ignorance, but here is an explanation of my problem. >> >>When I override the writeBodyParts method like this: >> >>def writeBodyParts(self): >> Page.writeBodyParts() >> self.validateHTML() >> >>I get this error when viewing a page that uses SitePage: >> >> >>TypeError: unbound method writeBodyParts() must be called with Page >>instance as first argument (got nothing instead) >> >>The error makes sense. The method expects and instance. But if I feed >>it an instance (self), it will loop forever. ??? >> >> > >Really? If you do: > >def writeBodyParts(self): > Page.writeBodyParts(self) > self.validateHTML() > >?? > > > That got rid of the error, but there appears to be no validation. I put in bogus tags like <font> and <br and got on response. I installed the software and ran the executable at the command line. Randall |
From: Ian B. <ia...@co...> - 2003-05-20 01:43:48
|
On Mon, 2003-05-19 at 20:35, Randall Smith wrote: > That got rid of the error, but there appears to be no validation. I put > in bogus tags like <font> and <br and got on response. I installed the > software and ran the executable at the command line. Hmm... can you put a print in, like: status = self.response().header('status', None) if status and status.find('Redirect') != -1: return response = self.response().rawResponse() contents = response['contents'] + closingTags ## Right here: print contents from WebUtils import WDGValidator errorText = WDGValidator.validateHTML(contents) if not errorText: return self.write(errorText) And make sure that it's really getting the content? But maybe first test the WDGValidator module, like: $ cd path/to/Webware $ python >>> from WebUtils.WDGValidator import validateHTML >>> validateHTML('<html><title and stuff</title>') ... And see if that's working. I think validateHTML might just fail silently if it can't run the validate script (I've never tested that failure situation). Maybe try putting the full path in WDGValidator, like: input, output = os.popen4('/path/to/validate') Ian |
From: Randall S. <ra...@tn...> - 2003-05-20 02:47:12
|
Ian Bicking wrote: >On Mon, 2003-05-19 at 20:35, Randall Smith wrote: > > >>That got rid of the error, but there appears to be no validation. I put >>in bogus tags like <font> and <br and got on response. I installed the >>software and ran the executable at the command line. >> >> > >Hmm... can you put a print in, like: > > status = self.response().header('status', None) > if status and status.find('Redirect') != -1: > return > > response = self.response().rawResponse() > contents = response['contents'] + closingTags > ## Right here: > print contents > from WebUtils import WDGValidator > errorText = WDGValidator.validateHTML(contents) > if not errorText: > return > self.write(errorText) > >And make sure that it's really getting the content? > >But maybe first test the WDGValidator module, like: > >$ cd path/to/Webware >$ python > > >>>>from WebUtils.WDGValidator import validateHTML >>>>validateHTML('<html><title and stuff</title>') >>>> >>>> >... > >And see if that's working. I think validateHTML might just fail >silently if it can't run the validate script (I've never tested that >failure situation). Maybe try putting the full path in WDGValidator, >like: > > input, output = os.popen4('/path/to/validate') > > > Ian > > > I think I got it. The validate executable is called validate.pl. WDGValidator.py calls validate like this: input, output = os.popen4('validate') I'm put a link to validate.pl as validate: ln -s validate.pl validate It worked great! Thanks Ian. -Randall |