base.py
46 lines
| 1.8 KiB
| text/x-python
|
PythonLexer
r547 | """The base Controller API | |||
Provides the BaseController class for subclassing. | ||||
""" | ||||
from pylons import config, tmpl_context as c, request, session | ||||
from pylons.controllers import WSGIController | ||||
from pylons.templating import render_mako as render | ||||
from rhodecode import __version__ | ||||
from rhodecode.lib import auth | ||||
from rhodecode.lib.utils import get_repo_slug | ||||
from rhodecode.model import meta | ||||
r629 | from rhodecode.model.hg import _get_repos_cached, \ | |||
r547 | _get_repos_switcher_cached | |||
r659 | from vcs import BACKENDS | |||
r547 | class BaseController(WSGIController): | |||
r659 | ||||
r547 | def __before__(self): | |||
r548 | c.rhodecode_version = __version__ | |||
c.rhodecode_name = config['rhodecode_title'] | ||||
r547 | c.repo_name = get_repo_slug(request) | |||
c.cached_repo_list = _get_repos_cached() | ||||
c.repo_switcher_list = _get_repos_switcher_cached(c.cached_repo_list) | ||||
r659 | c.backends = BACKENDS.keys() | |||
r547 | if c.repo_name: | |||
cached_repo = c.cached_repo_list.get(c.repo_name) | ||||
r659 | ||||
r547 | if cached_repo: | |||
c.repository_tags = cached_repo.tags | ||||
c.repository_branches = cached_repo.branches | ||||
else: | ||||
c.repository_tags = {} | ||||
c.repository_branches = {} | ||||
r659 | ||||
r629 | self.sa = meta.Session() | |||
r659 | ||||
r547 | 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: | ||||
#putting this here makes sure that we update permissions every time | ||||
r548 | self.rhodecode_user = c.rhodecode_user = auth.get_user(session) | |||
r547 | return WSGIController.__call__(self, environ, start_response) | |||
finally: | ||||
meta.Session.remove() | ||||