"""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.scmimportScmModelfromrhodecodeimportBACKENDSclassBaseController(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=ScmModel().get_repos()c.backends=BACKENDS.keys()self.cut_off_limit=int(config['cut_off_limit'])self.sa=meta.Session()scm_model=ScmModel(self.sa)#c.unread_journal = scm_model.get_unread_journal()ifc.repo_name:cached_repo=scm_model.get(c.repo_name)ifcached_repo:c.repository_tags=cached_repo.tagsc.repository_branches=cached_repo.branchesc.repository_followers=scm_model.get_followers(cached_repo.dbrepo.repo_id)c.repository_forks=scm_model.get_forks(cached_repo.dbrepo.repo_id)else:c.repository_tags={}c.repository_branches={}c.repository_followers=0c.repository_forks=0def__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()