Below is the file 'urls.py' from this revision. You can also download the file.

# Copyright (C) 2005 Grahame Bowland <grahame@angrygoats.net>
#
# This program is made available under the GNU GPL version 2.0 or
# greater. See the accompanying file COPYING for details.
#
# This program is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE.

from mtn import revision_re

#
# these are the same, regardless of which database the user wishes
# to view. These handles do not receive a RequestContext instance
# as their first argument.
#
common_urls = (
    r'robots.txt', 'RobotsTxt',  ## FIXME needs o exclude per-db paths
    r'mimeicon/([A-Za-z0-9][a-z0-9\-\+\.]*)/([A-Za-z0-9][a-z0-9\-\+\.]*)', 'MimeIcon',
)

#
# all of these should have GET handler that takes a per-DB context as an argument.
# They get a RequestContext instance as their first argument to methods, eg. GET
#
perdb_urls = (
    r'', 'Index',
    r'about', 'About',
    r'help', 'Help',
    r'tags', 'Tags',
    r'json/([A-Za-z]+)/(.*)', 'Json',

    r'revision/browse/('+revision_re+')/(.*)', 'RevisionBrowse',
    r'revision/browse/('+revision_re+')()', 'RevisionBrowse',
    r'revision/diff/('+revision_re+')/with/('+revision_re+')', 'RevisionDiff',
    r'revision/diff/('+revision_re+')/with/('+revision_re+')'+'/(.*)', 'RevisionDiff',
    r'revision/rawdiff/('+revision_re+')/with/('+revision_re+')', 'RevisionRawDiff',
    r'revision/rawdiff/('+revision_re+')/with/('+revision_re+')'+'/(.*)', 'RevisionRawDiff',
    r'revision/file/('+revision_re+')/(.*)', 'RevisionFile',
    r'revision/filechanges/()()('+revision_re+')/(.*)', 'RevisionFileChanges',
    r'revision/filechanges/from/(\d+)/to/(\d+)/('+revision_re+')/(.*)', 'RevisionFileChanges',
    r'revision/filechanges/rss/()()('+revision_re+')/(.*)', 'RevisionFileChangesRSS',
    r'revision/filechanges/rss/from/(\d+)/to/(\d+)/('+revision_re+')/(.*)', 'RevisionFileChangesRSS',
    r'revision/downloadfile/('+revision_re+')/(.*)', 'RevisionDownloadFile',
    r'revision/info/('+revision_re+')', 'RevisionInfo',
    r'revision/tar/('+revision_re+')', 'RevisionTar',
    r'revision/graph/('+revision_re+')', 'RevisionGraph',

    r'branch/changes/(.*)/from/(\d+)/to/(\d+)', 'HTMLBranchChanges',
    r'branch/changes/([^/]+)()()', 'HTMLBranchChanges',
    r'branch/changes/(.*)/from/(\d+)/to/(\d+)/rss', 'RSSBranchChanges',
    r'branch/changes/([^/]+)()()/rss', 'RSSBranchChanges',
    r'branch/tags/([^/]+)', 'Tags',

    # let's make it possible to access any function on the head revision
    # through this proxy method; it'll return a redirect to the head revision
    # with the specified function
    r'branch/(head)/([A-Za-z]+)/([^/]+)(.*)', 'BranchHead',
    r'branch/(anyhead)/([A-Za-z]+)/([^/]+)(.*)', 'BranchHead',
)