Mercurial > kallithea
changeset 6221:7c0b55fb3a85
controllers: remove redundant Repository database lookups
BaseRepoController already provides the repository object in c.db_repo
(may be None) and BaseController already provides the repository name
in c.repo_name (as given in the URL).
(Arguably, that's a bad design, and we should revisit that decision in
the future. For now, the code just performs slightly better.)
author | Søren Løvborg <sorenl@unity3d.com> |
---|---|
date | Mon, 05 Sep 2016 18:08:14 +0200 |
parents | 7bffccee3a49 |
children | 8ad40ef0ea80 |
files | kallithea/controllers/admin/repos.py kallithea/controllers/files.py kallithea/controllers/forks.py kallithea/controllers/pullrequests.py |
diffstat | 4 files changed, 24 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/controllers/admin/repos.py Fri Sep 23 14:05:42 2016 +0200 +++ b/kallithea/controllers/admin/repos.py Mon Sep 05 18:08:14 2016 +0200 @@ -65,11 +65,11 @@ def __before__(self): super(ReposController, self).__before__() - def _load_repo(self, repo_name): - repo_obj = Repository.get_by_repo_name(repo_name) + def _load_repo(self): + repo_obj = c.db_repo if repo_obj is None: - h.not_mapped_error(repo_name) + h.not_mapped_error(c.repo_name) raise HTTPFound(location=url('repos')) return repo_obj @@ -85,16 +85,14 @@ c.landing_revs_choices, c.landing_revs = ScmModel().get_repo_landing_revs(repo) - def __load_data(self, repo_name=None): + def __load_data(self): """ Load defaults settings for edit, and update - - :param repo_name: """ - c.repo_info = self._load_repo(repo_name) + c.repo_info = self._load_repo() self.__load_defaults(c.repo_info) - defaults = RepoModel()._get_defaults(repo_name) + defaults = RepoModel()._get_defaults(c.repo_name) defaults['clone_uri'] = c.repo_info.clone_uri_hidden # don't show password return defaults @@ -218,7 +216,7 @@ @HasRepoPermissionAnyDecorator('repository.admin') def update(self, repo_name): - c.repo_info = self._load_repo(repo_name) + c.repo_info = self._load_repo() self.__load_defaults(c.repo_info) c.active = 'settings' c.repo_fields = RepositoryField.query() \ @@ -248,7 +246,7 @@ Session().commit() except formencode.Invalid as errors: log.info(errors) - defaults = self.__load_data(repo_name) + defaults = self.__load_data() defaults.update(errors.value) c.users_array = repo_model.get_users_js() return htmlfill.render( @@ -304,7 +302,7 @@ @HasRepoPermissionAnyDecorator('repository.admin') def edit(self, repo_name): - defaults = self.__load_data(repo_name) + defaults = self.__load_data() c.repo_fields = RepositoryField.query() \ .filter(RepositoryField.repository == c.repo_info).all() repo_model = RepoModel() @@ -318,7 +316,7 @@ @HasRepoPermissionAnyDecorator('repository.admin') def edit_permissions(self, repo_name): - c.repo_info = self._load_repo(repo_name) + c.repo_info = self._load_repo() repo_model = RepoModel() c.users_array = repo_model.get_users_js() c.user_groups_array = repo_model.get_user_groups_js() @@ -369,7 +367,7 @@ @HasRepoPermissionAnyDecorator('repository.admin') def edit_fields(self, repo_name): - c.repo_info = self._load_repo(repo_name) + c.repo_info = self._load_repo() c.repo_fields = RepositoryField.query() \ .filter(RepositoryField.repository == c.repo_info).all() c.active = 'fields' @@ -413,7 +411,7 @@ @HasRepoPermissionAnyDecorator('repository.admin') def edit_advanced(self, repo_name): - c.repo_info = self._load_repo(repo_name) + c.repo_info = self._load_repo() c.default_user_id = User.get_default_user().user_id c.in_public_journal = UserFollowing.query() \ .filter(UserFollowing.user_id == c.default_user_id) \ @@ -529,7 +527,7 @@ @HasRepoPermissionAnyDecorator('repository.admin') def edit_caches(self, repo_name): - c.repo_info = self._load_repo(repo_name) + c.repo_info = self._load_repo() c.active = 'caches' if request.POST: try: @@ -547,7 +545,7 @@ @HasRepoPermissionAnyDecorator('repository.admin') def edit_remote(self, repo_name): - c.repo_info = self._load_repo(repo_name) + c.repo_info = self._load_repo() c.active = 'remote' if request.POST: try: @@ -562,7 +560,7 @@ @HasRepoPermissionAnyDecorator('repository.admin') def edit_statistics(self, repo_name): - c.repo_info = self._load_repo(repo_name) + c.repo_info = self._load_repo() repo = c.repo_info.scm_instance if c.repo_info.stats:
--- a/kallithea/controllers/files.py Fri Sep 23 14:05:42 2016 +0200 +++ b/kallithea/controllers/files.py Mon Sep 05 18:08:14 2016 +0200 @@ -426,7 +426,7 @@ @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin') def add(self, repo_name, revision, f_path): - repo = Repository.get_by_repo_name(repo_name) + repo = c.db_repo if repo.enable_locking and repo.locked[0]: h.flash(_('This repository has been locked by %s on %s') % (h.person_by_id(repo.locked[0]),
--- a/kallithea/controllers/forks.py Fri Sep 23 14:05:42 2016 +0200 +++ b/kallithea/controllers/forks.py Mon Sep 05 18:08:14 2016 +0200 @@ -65,19 +65,17 @@ c.can_update = Ui.get_by_key('hooks', Ui.HOOK_UPDATE).ui_active - def __load_data(self, repo_name=None): + def __load_data(self): """ Load defaults settings for edit, and update - - :param repo_name: """ self.__load_defaults() - c.repo_info = db_repo = Repository.get_by_repo_name(repo_name) - repo = db_repo.scm_instance + c.repo_info = c.db_repo + repo = c.db_repo.scm_instance if c.repo_info is None: - h.not_mapped_error(repo_name) + h.not_mapped_error(c.repo_name) raise HTTPFound(location=url('repos')) c.default_user_id = User.get_default_user().user_id @@ -99,7 +97,7 @@ c.stats_percentage = '%.2f' % ((float((last_rev)) / c.repo_last_rev) * 100) - defaults = RepoModel()._get_defaults(repo_name) + defaults = RepoModel()._get_defaults(c.repo_name) # alter the description to indicate a fork defaults['description'] = ('fork of repository: %s \n%s' % (defaults['repo_name'], @@ -140,7 +138,7 @@ h.not_mapped_error(repo_name) raise HTTPFound(location=url('home')) - defaults = self.__load_data(repo_name) + defaults = self.__load_data() return htmlfill.render( render('forks/fork.html'),
--- a/kallithea/controllers/pullrequests.py Fri Sep 23 14:05:42 2016 +0200 +++ b/kallithea/controllers/pullrequests.py Mon Sep 05 18:08:14 2016 +0200 @@ -196,7 +196,6 @@ c.from_ = request.GET.get('from_') or '' c.closed = request.GET.get('closed') or '' c.pull_requests = PullRequestModel().get_all(repo_name, from_=c.from_, closed=c.closed) - c.repo_name = repo_name p = safe_int(request.GET.get('page'), 1) c.pullrequests_pager = Page(c.pull_requests, page=p, items_per_page=100) @@ -298,7 +297,7 @@ 'repository.admin') @jsonify def repo_info(self, repo_name): - repo = RepoModel()._get_repo(repo_name) + repo = c.db_repo refs, selected_ref = self._get_repo_refs(repo.scm_instance) return { 'description': repo.description.split('\n', 1)[0], @@ -311,7 +310,7 @@ @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', 'repository.admin') def create(self, repo_name): - repo = RepoModel()._get_repo(repo_name) + repo = c.db_repo try: _form = PullRequestForm(repo.repo_id)().to_python(request.POST) except formencode.Invalid as errors: