"""The base Controller APIProvides the BaseController class for subclassing."""frompylonsimportconfig,tmpl_contextasc,request,sessionfrompylons.controllersimportWSGIControllerfrompylons.templatingimportrender_makoasrenderfromrhodecodeimport__version__fromrhodecode.libimportauthfromrhodecode.lib.utilsimportget_repo_slugfromrhodecode.modelimportmetafromrhodecode.model.hg_modelimport_get_repos_cached, \
_get_repos_switcher_cachedclassBaseController(WSGIController):def__before__(self):c.rhodecode_version=__version__c.rhodecode_name=config['rhodecode_title']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)ifc.repo_name:cached_repo=c.cached_repo_list.get(c.repo_name)ifcached_repo:c.repository_tags=cached_repo.tagsc.repository_branches=cached_repo.brancheselse:c.repository_tags={}c.repository_branches={}self.sa=meta.Sessiondef__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 timeself.rhodecode_user=c.rhodecode_user=auth.get_user(session)returnWSGIController.__call__(self,environ,start_response)finally:meta.Session.remove()