import os, string, sys class AdminPage: """ AdminPage is the abstract superclass of all CGI Wrapper administration CGI classes. Subclasses typically override title() and writeBody(), but may customize other methods. Subclasses use self._var for the various vars that are passed in from CGI Wrapper and self.write() and self.writeln(). """ ## Init ## def __init__(self, vars): for name in vars.keys(): setattr(self, '_'+name, vars[name]) self._vars = vars ## HTML ## def html(self): self._html = [] self.writeHeader() self.writeBody() self.writeFooter() return string.join(self._html, '') ## Utility methods ## def write(self, *args): for arg in args: self._html.append(str(arg)) def writeln(self, *args): for arg in args: self._html.append(str(arg)) self._html.append('\n') ## Content methods ## def writeHeader(self): self.writeln('''<html> <head> <title>%s</title> </head> <body %s><table align=center><tr><td>''' % (self.title(), self.bodyTags())) self.writeBanner() self.writeToolbar() def writeBody(self): raise NotImplementedError, 'Should be overridden in a subclass' def writeFooter(self): self.writeln('<p><br><hr></table></body></html>') def title(self): raise NotImplementedError, 'Should be overridden in a subclass' def bodyTags(self): return 'color=black bgcolor=white' def writeBanner(self): self.writeln('''<table align=center bgcolor=darkblue cellpadding=5 cellspacing=0 width=100%%> <tr><td align=center> <font face="Tahoma, Arial, Helvetica" color=white><b> CGI Wrapper <br><font size=+2>%s</font> </b></font> </td></tr> </table><p>''' % self.title()) def writeToolbar(self): pass