import os
from WebKit.SidebarPage import SidebarPage
class AdminPage(SidebarPage):
"""AdminPage
This is the abstract superclass of all WebKit administration pages.
Subclasses typically override title() and writeContent(), but may
customize other methods.
"""
def cornerTitle(self):
return 'WebKit AppServer'
def writeSidebar(self):
self.writeAdminMenu()
self.writeWebKitSidebarSections()
def writeAdminMenu(self):
self.menuHeading('Admin')
self.menuItem('Home', 'Main')
self.menuItem('Activity log', 'Access',
self.fileSize('ActivityLogFilename'))
self.menuItem('Error log', 'Errors',
self.fileSize('ErrorLogFilename'))
self.menuItem('Config', 'Config')
self.menuItem('Plug-ins', 'PlugIns')
self.menuItem('Servlet Cache', 'ServletCache')
self.menuItem('Application Control', 'AppControl')
self.menuItem('Thread Control', 'ThreadControl')
self.menuItem('Logout', 'Main?logout=yes')
def fileSize(self, filename):
"""Utility method for writeMenu() to get the size of a configuration file.
Returns an HTML string.
"""
filename = self.application().setting(filename)
if os.path.exists(filename):
size = '%0.0f KB' % (os.path.getsize(filename)/1024.0)
else:
size = 'not existent'
return '<span style="font-size:smaller">(%s)</span>' % size
def loginDisabled(self):
"""Return None if login is enabled, else a message about why not."""
if self.application().setting('AdminPassword'):
return None
return '<p>Logins to admin pages are disabled until' \
' you supply an AdminPassword in Application.config.</p>'
|