changeset 6304:a6af26b5ffc1

repositories: backend cleanups related to breadcrumbs
author Mads Kiilerich <madski@unity3d.com>
date Thu, 10 Nov 2016 16:10:41 +0100
parents 1cf51cd05e36
children 93a337bf46fe
files kallithea/controllers/admin/repo_groups.py kallithea/controllers/changelog.py kallithea/controllers/home.py kallithea/model/db.py kallithea/model/repo.py kallithea/templates/index.html
diffstat 6 files changed, 19 insertions(+), 51 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/controllers/admin/repo_groups.py	Thu Nov 10 16:10:41 2016 +0100
+++ b/kallithea/controllers/admin/repo_groups.py	Thu Nov 10 16:10:41 2016 +0100
@@ -298,17 +298,12 @@
         c.active = 'settings'
 
         c.group = c.repo_group = RepoGroupModel()._get_repo_group(group_name)
-        c.group_repos = c.group.repositories.all()
-
-        #overwrite our cached list with current filter
-        c.repo_cnt = 0
 
         groups = RepoGroup.query(sorted=True).filter_by(parent_group=c.group).all()
         c.groups = self.scm_model.get_repo_groups(groups)
 
-        c.repos_list = Repository.query(sorted=True).filter_by(group=c.group).all()
-
-        repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list,
+        repos_list = Repository.query(sorted=True).filter_by(group=c.group).all()
+        repos_data = RepoModel().get_repos_as_dict(repos_list=repos_list,
                                                    admin=False, short_name=True)
         #json used to render the grid
         c.data = json.dumps(repos_data)
--- a/kallithea/controllers/changelog.py	Thu Nov 10 16:10:41 2016 +0100
+++ b/kallithea/controllers/changelog.py	Thu Nov 10 16:10:41 2016 +0100
@@ -48,6 +48,7 @@
 
 
 def _load_changelog_summary():
+    # also used from summary ...
     p = safe_int(request.GET.get('page'), 1)
     size = safe_int(request.GET.get('size'), 10)
 
--- a/kallithea/controllers/home.py	Thu Nov 10 16:10:41 2016 +0100
+++ b/kallithea/controllers/home.py	Thu Nov 10 16:10:41 2016 +0100
@@ -57,9 +57,9 @@
         c.groups = self.scm_model.get_repo_groups()
         c.group = None
 
-        c.repos_list = Repository.query(sorted=True).filter_by(group=None).all()
+        repos_list = Repository.query(sorted=True).filter_by(group=None).all()
 
-        repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list,
+        repos_data = RepoModel().get_repos_as_dict(repos_list=repos_list,
                                                    admin=False, short_name=True)
         #json used to render the grid
         c.data = json.dumps(repos_data)
--- a/kallithea/model/db.py	Thu Nov 10 16:10:41 2016 +0100
+++ b/kallithea/model/db.py	Thu Nov 10 16:10:41 2016 +0100
@@ -1171,24 +1171,14 @@
     @property
     def groups_with_parents(self):
         groups = []
-        if self.group is None:
-            return groups
-
-        cur_gr = self.group
-        groups.insert(0, cur_gr)
-        while 1:
-            gr = getattr(cur_gr, 'parent_group', None)
-            cur_gr = cur_gr.parent_group
-            if gr is None:
-                break
-            groups.insert(0, gr)
-
+        group = self.group
+        while group is not None:
+            groups.append(group)
+            group = group.parent_group
+            assert group not in groups, group # avoid recursion on bad db content
+        groups.reverse()
         return groups
 
-    @property
-    def groups_and_repo(self):
-        return self.groups_with_parents, self.just_name, self.repo_name
-
     @LazyProperty
     def repo_path(self):
         """
@@ -1589,26 +1579,13 @@
 
     @property
     def parents(self):
-        parents_recursion_limit = 10
         groups = []
-        if self.parent_group is None:
-            return groups
-        cur_gr = self.parent_group
-        groups.insert(0, cur_gr)
-        cnt = 0
-        while 1:
-            cnt += 1
-            gr = getattr(cur_gr, 'parent_group', None)
-            cur_gr = cur_gr.parent_group
-            if gr is None:
-                break
-            if cnt == parents_recursion_limit:
-                # this will prevent accidental infinite loops
-                log.error(('more than %s parents found for group %s, stopping '
-                           'recursive parent fetching' % (parents_recursion_limit, self)))
-                break
-
-            groups.insert(0, gr)
+        group = self.parent_group
+        while group is not None:
+            groups.append(group)
+            group = group.parent_group
+            assert group not in groups, group # avoid recursion on bad db content
+        groups.reverse()
         return groups
 
     @property
--- a/kallithea/model/repo.py	Thu Nov 10 16:10:41 2016 +0100
+++ b/kallithea/model/repo.py	Thu Nov 10 16:10:41 2016 +0100
@@ -270,10 +270,8 @@
             return None
 
         defaults = repo_info.get_dict()
-        group, repo_name, repo_name_full = repo_info.groups_and_repo
-        defaults['repo_name'] = repo_name
-        defaults['repo_group'] = getattr(group[-1] if group else None,
-                                         'group_id', None)
+        defaults['repo_name'] = repo_info.just_name
+        defaults['repo_group'] = repo_info.group_id
 
         for strip, k in [(0, 'repo_type'), (1, 'repo_enable_downloads'),
                          (1, 'repo_description'), (1, 'repo_enable_locking'),
--- a/kallithea/templates/index.html	Thu Nov 10 16:10:41 2016 +0100
+++ b/kallithea/templates/index.html	Thu Nov 10 16:10:41 2016 +0100
@@ -5,9 +5,6 @@
     ${_('Dashboard')}
 </%block>
 
-<%def name="breadcrumbs()">
-</%def>
-
 <%block name="header_menu">
 ${self.menu('repositories')}
 </%block>