A
AWasilenko
I can't figure out this problem Im having, I just can't understand why
it is ignoring the call I put in. First the code (This is a cherrypy
website):
import sys, cherrypy, html
class Root:
@cherrypy.expose
def index(self, pageid = "Index"):
selection = html.Page()
return selection.makeit(dex = pageid)
cherrypy.config.update({'server.socket_port': 2572, 'log.screen':
False})
cherrypy.quickstart(Root())
If you're not familiar with cherrypy, whats going on here is its
pulling a variable from the url and just passing that to my page class
that I created. The url would look like http://nonyaz.com/index?pageid=foo
and pageid would thus be foo.
and here is the class code stored in the html.py file that's causing
me all this grief:
class Page:
#Generic webpage assembler
def __init__(self):
#Open the header txt file for later use
self.headertxt = open("pages/header.html","r")
#self.footertxt = open("pages/footer.html","r")
def makeit(self,dex=""):
pagetitle, htmlbody = self.pager(dex)
return self.headerinsert(pagetitle) + htmlbody
def pager(self,dex):
#Input page filename, Output pagetitle and the HTML output
#Find out if the file requested actually exists
try:
j = dex + ".html"
textfile = open("pages/" + j, "r")
#If not 404' it
except:
self.err404(dex)
#The first line in the .html files is the title, this reads that one
line
pagetitle = textfile.readline()
#Put the remaining lines of HTML into a var
htmlbody = textfile.read()
#Return the results
return pagetitle,htmlbody
def headerinsert(self,pagetitle):
#Processes the header.html file for use. Input a page title,
outputs
#the compleated header with pagetitle inserted
headerp1 = ""
for i in range(5):
headerp1 += self.headertxt.readline()
headerp2 = self.headertxt.readline(7)
headerp3 = self.headertxt.readline()
headerp4 = self.headertxt.read()
return headerp1 + headerp2 + str.strip(pagetitle) + headerp3 +
headerp4
def err404(self,whatitis="N/A"):
#Page not found error page
return """<body bgcolor="#666666">
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<center>Sorry the page <em>""" + str(whatitis) + """</em> does not
exist.<br />
<img src="/files/images/404.png" alt="Page cannot be found."></center>
</body>"""
This code does work when there is a valid page, aka when the try
statement executes with out exception. The the exception is raised
for when there is no file, that's where the problems come in, I want
it just to call the err404 function and return my 404 page, but it
seems to act like its not there and keeps on going, giving me this
error:
Traceback (most recent call last):
File "/home2/awasilenko/lib/python2.4/cherrypy/_cprequest.py", line
342, in respond
cherrypy.response.body = self.handler()
File "/home2/awasilenko/lib/python2.4/cherrypy/_cpdispatch.py", line
15, in __call__
return self.callable(*self.args, **self.kwargs)
File "/home2/awasilenko/webapps/cp/site.py", line 7, in index
return selection.makeit(dex = pageid)
File "/home2/awasilenko/webapps/cp/html.py", line 10, in makeit
pagetitle, htmlbody = self.pager(dex)
File "/home2/awasilenko/webapps/cp/html.py", line 25, in pager
pagetitle = textfile.readline()
UnboundLocalError: local variable 'textfile' referenced before
assignment
I know the except is being executed because I put a break in there for
testing purposes and it did break, but as for why its not pulling up
the 404 function and returning the error page, I have no idea.
it is ignoring the call I put in. First the code (This is a cherrypy
website):
import sys, cherrypy, html
class Root:
@cherrypy.expose
def index(self, pageid = "Index"):
selection = html.Page()
return selection.makeit(dex = pageid)
cherrypy.config.update({'server.socket_port': 2572, 'log.screen':
False})
cherrypy.quickstart(Root())
If you're not familiar with cherrypy, whats going on here is its
pulling a variable from the url and just passing that to my page class
that I created. The url would look like http://nonyaz.com/index?pageid=foo
and pageid would thus be foo.
and here is the class code stored in the html.py file that's causing
me all this grief:
class Page:
#Generic webpage assembler
def __init__(self):
#Open the header txt file for later use
self.headertxt = open("pages/header.html","r")
#self.footertxt = open("pages/footer.html","r")
def makeit(self,dex=""):
pagetitle, htmlbody = self.pager(dex)
return self.headerinsert(pagetitle) + htmlbody
def pager(self,dex):
#Input page filename, Output pagetitle and the HTML output
#Find out if the file requested actually exists
try:
j = dex + ".html"
textfile = open("pages/" + j, "r")
#If not 404' it
except:
self.err404(dex)
#The first line in the .html files is the title, this reads that one
line
pagetitle = textfile.readline()
#Put the remaining lines of HTML into a var
htmlbody = textfile.read()
#Return the results
return pagetitle,htmlbody
def headerinsert(self,pagetitle):
#Processes the header.html file for use. Input a page title,
outputs
#the compleated header with pagetitle inserted
headerp1 = ""
for i in range(5):
headerp1 += self.headertxt.readline()
headerp2 = self.headertxt.readline(7)
headerp3 = self.headertxt.readline()
headerp4 = self.headertxt.read()
return headerp1 + headerp2 + str.strip(pagetitle) + headerp3 +
headerp4
def err404(self,whatitis="N/A"):
#Page not found error page
return """<body bgcolor="#666666">
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<center>Sorry the page <em>""" + str(whatitis) + """</em> does not
exist.<br />
<img src="/files/images/404.png" alt="Page cannot be found."></center>
</body>"""
This code does work when there is a valid page, aka when the try
statement executes with out exception. The the exception is raised
for when there is no file, that's where the problems come in, I want
it just to call the err404 function and return my 404 page, but it
seems to act like its not there and keeps on going, giving me this
error:
Traceback (most recent call last):
File "/home2/awasilenko/lib/python2.4/cherrypy/_cprequest.py", line
342, in respond
cherrypy.response.body = self.handler()
File "/home2/awasilenko/lib/python2.4/cherrypy/_cpdispatch.py", line
15, in __call__
return self.callable(*self.args, **self.kwargs)
File "/home2/awasilenko/webapps/cp/site.py", line 7, in index
return selection.makeit(dex = pageid)
File "/home2/awasilenko/webapps/cp/html.py", line 10, in makeit
pagetitle, htmlbody = self.pager(dex)
File "/home2/awasilenko/webapps/cp/html.py", line 25, in pager
pagetitle = textfile.readline()
UnboundLocalError: local variable 'textfile' referenced before
assignment
I know the except is being executed because I put a break in there for
testing purposes and it did break, but as for why its not pulling up
the 404 function and returning the error page, I have no idea.