"""This URL scheme is based on ``SCRIPT_NAME``."""
__docformat__ = "restructuredtext"
# Created: Mon Apr 19 17:54:08 PDT 2004
# Author: Shannon -jj Behrens
# Email: jjinux@users.sourceforge.net
#
# Copyright (c) Shannon -jj Behrens. All rights reserved.
import re
from QueryParameters import QueryParameters
class ScriptName(QueryParameters):
"""This URL scheme is based on ``SCRIPT_NAME``.
This is for when the Web server puts the ``PATH_INFO``-like information in
``SCRIPT_NAME``. This is only possible because it itself knows about
Aquarium and acts as the entry point for Aquarium.
See aquarium.urlscheme.UrlSchemeAPI_.
.. _aquarium.urlscheme.UrlSchemeAPI:
aquarium.urlscheme.UrlSchemeAPI-module.html
"""
def getRootUrl(self, secure=-1):
"""Figure out the URL for the root of this site."""
cgiEnv = self._ctx.wsa.getCgiEnv()
url = scheme = self.getScheme(secure)
url += cgiEnv["SERVER_NAME"]
url += self.getPort(scheme)
url += "/"
return url
def screen(self, screen, vars=None, secure=-1):
"""Return a dynamic URL for the given screen."""
if vars is None:
vars = {}
ctx = self._ctx
cgiEnv = self._ctx.wsa.getCgiEnv()
url = self.getRootUrl(secure) + re.sub(r"\.", "/", screen)
return self.addVars(url, vars)
def whichScreen(self):
"""Which screen does the user want to view?"""
screen = self._ctx.wsa.getCgiEnv().get("SCRIPT_NAME", None)
if not screen:
return None
return re.sub("/", ".", screen[1:])
|