terom@5: terom@5: class Page (object) : terom@5: """ terom@5: A page is kind of like a controller, I guess terom@5: """ terom@5: terom@5: # the page title, used in the HTML terom@5: title = None terom@5: terom@5: # the page name, used in the menu terom@5: name = None terom@5: terom@5: # the page path, used in the URL terom@5: path = None terom@5: terom@5: # parent page, can be self terom@5: parent = None terom@5: terom@5: # menu of sub-pages, may be empty terom@5: menu = None terom@5: terom@5: def __init__ (self, req, path_suffix) : terom@5: self.req = req terom@5: self.path_suffix = path_suffix terom@5: terom@5: # default parent to root terom@5: if not self.parent : terom@5: from pages import index as index_page terom@5: terom@5: self.parent = index_page.Page terom@5: terom@5: def _build_template (self, template_class) : terom@5: tpl = template_class(searchList=[self.req]) terom@5: terom@5: tpl.page_title = self.title terom@5: tpl.page_name = self.name terom@5: tpl.page_path = self.path terom@5: terom@5: tpl.page_menu = self.menu terom@5: tpl.page = self terom@5: terom@5: return tpl terom@5: terom@5: def get_response_code (self) : terom@5: """ terom@5: Returns the HTTP response code to be used terom@5: """ terom@5: terom@5: return 200 terom@5: terom@5: def render_template (self) : terom@5: """ terom@5: Returns an instance of Cheetah.Template, prepopulated with whatever variables it needs, ready to be rendered terom@5: """ terom@5: terom@5: abstract terom@5: terom@5: terom@5: