changeset 6224:506dd480e408

db: always do case-insensitive sorting of repository names We retain the implicit order_by on the follows_repository relationship. This is probably a bad idea, since it causes sorting even when it's not needed; but for now, at least, we consistently do case-insensitive sort.
author Søren Løvborg <sorenl@unity3d.com>
date Thu, 15 Sep 2016 15:25:13 +0200
parents 873a3839865d
children 0b7b8e8031e6
files kallithea/controllers/admin/repos.py kallithea/controllers/home.py kallithea/model/db.py
diffstat 3 files changed, 4 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/controllers/admin/repos.py	Wed Sep 14 15:52:26 2016 +0200
+++ b/kallithea/controllers/admin/repos.py	Thu Sep 15 15:25:13 2016 +0200
@@ -415,7 +415,7 @@
             .filter(UserFollowing.user_id == c.default_user_id) \
             .filter(UserFollowing.follows_repository == c.repo_info).scalar()
 
-        _repos = Repository.query().order_by(Repository.repo_name).all()
+        _repos = Repository.query(sorted=True).all()
         read_access_repos = RepoList(_repos)
         c.repos_list = [(None, _('-- Not a fork --'))]
         c.repos_list += [(x.repo_id, x.repo_name)
--- a/kallithea/controllers/home.py	Wed Sep 14 15:52:26 2016 +0200
+++ b/kallithea/controllers/home.py	Thu Sep 15 15:25:13 2016 +0200
@@ -72,7 +72,7 @@
         #wrapper for conditional cache
         def _c():
             log.debug('generating switcher repo/groups list')
-            all_repos = Repository.query().order_by(Repository.repo_name).all()
+            all_repos = Repository.query(sorted=True).all()
             repo_iter = self.scm_model.get_repos(all_repos)
             all_groups = RepoGroup.query().order_by(RepoGroup.group_name).all()
             repo_groups_iter = self.scm_model.get_repo_groups(all_groups)
--- a/kallithea/model/db.py	Wed Sep 14 15:52:26 2016 +0200
+++ b/kallithea/model/db.py	Thu Sep 15 15:25:13 2016 +0200
@@ -1619,9 +1619,7 @@
 
     @property
     def repositories(self):
-        return Repository.query() \
-                .filter(Repository.group == self) \
-                .order_by(Repository.repo_name)
+        return Repository.query(sorted=True).filter_by(group=self)
 
     @property
     def repositories_recursive_count(self):
@@ -2058,7 +2056,7 @@
     user = relationship('User', primaryjoin='User.user_id==UserFollowing.user_id')
 
     follows_user = relationship('User', primaryjoin='User.user_id==UserFollowing.follows_user_id')
-    follows_repository = relationship('Repository', order_by='Repository.repo_name')
+    follows_repository = relationship('Repository', order_by=lambda: func.lower(Repository.repo_name))
 
     @classmethod
     def get_repo_followers(cls, repo_id):