base.py
41 lines
| 1.5 KiB
| text/x-python
|
PythonLexer
Marcin Kuzminski
|
r0 | """The base Controller API | ||
Provides the BaseController class for subclassing. | ||||
""" | ||||
r185 | from beaker.cache import cache_region | |||
from pylons import config, tmpl_context as c, request, session | ||||
Marcin Kuzminski
|
r0 | from pylons.controllers import WSGIController | ||
from pylons.templating import render_mako as render | ||||
r185 | from pylons_app.lib.auth import LoginRequired, AuthUser | |||
from pylons_app.lib.utils import get_repo_slug | ||||
Marcin Kuzminski
|
r0 | from pylons_app.model import meta | ||
r107 | from pylons_app.model.hg_model import HgModel | |||
r224 | from pylons_app import __version__ | |||
Marcin Kuzminski
|
r0 | |||
r169 | @cache_region('long_term', 'cached_repo_list') | |||
def _get_repos_cached(): | ||||
return [rep for rep in HgModel().get_repos()] | ||||
r134 | ||||
r196 | @cache_region('long_term', 'full_changelog') | |||
def _full_changelog_cached(repo_name): | ||||
return list(reversed(list(HgModel().get_repo(repo_name)))) | ||||
Marcin Kuzminski
|
r0 | class BaseController(WSGIController): | ||
r185 | ||||
def __before__(self): | ||||
r224 | c.hg_app_version = __version__ | |||
r185 | c.repos_prefix = config['hg_app_name'] | |||
c.repo_name = get_repo_slug(request) | ||||
c.hg_app_user = session.get('hg_app_user', AuthUser()) | ||||
c.cached_repo_list = _get_repos_cached() | ||||
self.sa = meta.Session | ||||
Marcin Kuzminski
|
r0 | def __call__(self, environ, start_response): | ||
"""Invoke the Controller""" | ||||
# WSGIController.__call__ dispatches to the Controller method | ||||
# the request is routed to. This routing information is | ||||
# available in environ['pylons.routes_dict'] | ||||
try: | ||||
return WSGIController.__call__(self, environ, start_response) | ||||
finally: | ||||
r51 | meta.Session.remove() | |||