base.py
52 lines
| 2.0 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 | ||||
r691 | from rhodecode.model.scm import ScmModel | |||
r710 | from rhodecode import BACKENDS | |||
r665 | ||||
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) | |||
r691 | c.cached_repo_list = ScmModel().get_repos() | |||
r659 | c.backends = BACKENDS.keys() | |||
r665 | ||||
r784 | self.sa = meta.Session() | |||
scm_model = ScmModel(self.sa) | ||||
#c.unread_journal = scm_model.get_unread_journal() | ||||
r547 | if c.repo_name: | |||
r747 | cached_repo = scm_model.get(c.repo_name) | |||
r547 | if cached_repo: | |||
c.repository_tags = cached_repo.tags | ||||
c.repository_branches = cached_repo.branches | ||||
r747 | c.repository_followers = scm_model.get_followers(cached_repo.dbrepo.repo_id) | |||
c.repository_forks = scm_model.get_forks(cached_repo.dbrepo.repo_id) | ||||
r547 | else: | |||
c.repository_tags = {} | ||||
c.repository_branches = {} | ||||
r747 | c.repository_followers = 0 | |||
c.repository_forks = 0 | ||||
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() | ||||