Page Source

from utils.controls import *
from utils.output import html
from mod_python import apache
from utils.display import Display, Database, Arguments
from utils.web_exc import WebError
from utils.static_strings import StaticString
from config import docroot
import string, os
import debugging

class PathsDisplay(Display, StaticString, Database):
  def __init__(self, req):
    Display.__init__(self, req)

  def make_page(self, page):
    self.prep_database()

    page.set_type("info")
    
    page.set_title("Information")
    page.append(self.GetString(key='services_website_index',
                                 display=self,
                                 title_fn=page.set_title))

    if self.permit_action("add"):
      page.add_navigation("%(script)s/add" % self.req.urls,
                          "Forge Your Own Path")

    page.add_navigation("%(aside:)s" % self.req.urls(),
                        "Asides")

    # This page only appears in multiple mode.
    page.append(self.multiple_database())

  def permit_action(self, action):
    return ((action == 'add' and perms.may(self.req.login, "add", "documentation")))

  multiple_container_control = SimpleContainerControl(html.UL)

  multiple_controls = [
    LinkControl("path_name",
                "%(docpath!path_name)s",
                FieldControl("title"))
    ]
      

  def db_query(self):
    wc = []
    # if not logged in, don't show private paths
    if not self.req.login:
      wc.append("not private")

    s = queries.Select(tables="doc_paths",
                       order="title",
                       where=wc and string.join(wc, ' AND ') or None)
    s.execute()
    self.query = s

  def is_multiple(self):
    return 1

  def db_fetch(self):
    self.fields = self.query.fetch()
    return self.fields

def new(req):
  return PathsDisplay(req)