base.py
46 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
Marcin Kuzminski
|
r0 | """The base Controller API | ||
Provides the BaseController class for subclassing. | ||||
""" | ||||
r185 | 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 | ||||
r373 | from pylons_app import __version__ | |||
r299 | from pylons_app.lib import auth | |||
r185 | from pylons_app.lib.utils import get_repo_slug | |||
Marcin Kuzminski
|
r0 | from pylons_app.model import meta | ||
r373 | from pylons_app.model.hg_model import _get_repos_cached, \ | |||
_get_repos_switcher_cached | ||||
Marcin Kuzminski
|
r0 | |||
class BaseController(WSGIController): | ||||
r185 | ||||
def __before__(self): | ||||
r224 | c.hg_app_version = __version__ | |||
r381 | c.hg_app_name = config['hg_app_title'] | |||
r185 | c.repo_name = get_repo_slug(request) | |||
c.cached_repo_list = _get_repos_cached() | ||||
r373 | c.repo_switcher_list = _get_repos_switcher_cached(c.cached_repo_list) | |||
r453 | ||||
if c.repo_name: | ||||
r535 | cached_repo = c.cached_repo_list.get(c.repo_name) | |||
if cached_repo: | ||||
c.repository_tags = cached_repo.tags | ||||
c.repository_branches = cached_repo.branches | ||||
else: | ||||
c.repository_tags = {} | ||||
c.repository_branches = {} | ||||
r453 | ||||
r185 | 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: | ||||
r368 | #putting this here makes sure that we update permissions every time | |||
c.hg_app_user = auth.get_user(session) | ||||
Marcin Kuzminski
|
r0 | return WSGIController.__call__(self, environ, start_response) | ||
finally: | ||||
r51 | meta.Session.remove() | |||