diff --git a/rhodecode/controllers/admin/repos.py b/rhodecode/controllers/admin/repos.py
--- a/rhodecode/controllers/admin/repos.py
+++ b/rhodecode/controllers/admin/repos.py
@@ -64,20 +64,10 @@ class ReposController(BaseController):
super(ReposController, self).__before__()
def __load_defaults(self):
+ c.repo_groups = Group.groups_choices()
+ c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
+
repo_model = RepoModel()
-
- c.repo_groups = [('', '')]
- parents_link = lambda k: h.literal('»'.join(
- map(lambda k: k.group_name,
- k.parents + [k])
- )
- )
-
- c.repo_groups.extend([(x.group_id, parents_link(x)) for \
- x in self.sa.query(Group).all()])
- c.repo_groups = sorted(c.repo_groups,
- key=lambda t: t[1].split('»')[0])
- c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
c.users_array = repo_model.get_users_js()
c.users_groups_array = repo_model.get_users_groups_js()
diff --git a/rhodecode/controllers/admin/repos_groups.py b/rhodecode/controllers/admin/repos_groups.py
--- a/rhodecode/controllers/admin/repos_groups.py
+++ b/rhodecode/controllers/admin/repos_groups.py
@@ -32,15 +32,7 @@ class ReposGroupsController(BaseControll
super(ReposGroupsController, self).__before__()
def __load_defaults(self):
-
- c.repo_groups = [('', '')]
- parents_link = lambda k: h.literal('»'.join(k))
-
- c.repo_groups.extend([(x.group_id, parents_link(x.full_path_splitted))
- for x in self.sa.query(Group).all()])
-
- c.repo_groups = sorted(c.repo_groups,
- key=lambda t: t[1].split('»')[0])
+ c.repo_groups = Group.groups_choices()
c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
def __load_data(self, group_id):
diff --git a/rhodecode/controllers/admin/settings.py b/rhodecode/controllers/admin/settings.py
--- a/rhodecode/controllers/admin/settings.py
+++ b/rhodecode/controllers/admin/settings.py
@@ -366,17 +366,7 @@ class SettingsController(BaseController)
def create_repository(self):
"""GET /_admin/create_repository: Form to create a new item"""
- c.repo_groups = [('', '')]
- parents_link = lambda k: h.literal('»'.join(
- map(lambda k: k.group_name,
- k.parents + [k])
- )
- )
-
- c.repo_groups.extend([(x.group_id, parents_link(x)) for \
- x in self.sa.query(Group).all()])
- c.repo_groups = sorted(c.repo_groups,
- key=lambda t: t[1].split('»')[0])
+ c.repo_groups = Group.groups_choices()
c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
new_repo = request.GET.get('repo', '')
diff --git a/rhodecode/lib/helpers.py b/rhodecode/lib/helpers.py
--- a/rhodecode/lib/helpers.py
+++ b/rhodecode/lib/helpers.py
@@ -598,12 +598,11 @@ def repo_link(groups_and_repos):
return repo_name
else:
def make_link(group):
- return link_to(group.group_name, url('repos_group',
- id=group.group_id))
+ return link_to(group.name, url('repos_group_home',
+ group_name=group.group_name))
return literal(' » '.join(map(make_link, groups)) + \
" » " + repo_name)
-
def fancy_file_stats(stats):
"""
Displays a fancy two colored bar for number of added/deleted
diff --git a/rhodecode/lib/utils.py b/rhodecode/lib/utils.py
--- a/rhodecode/lib/utils.py
+++ b/rhodecode/lib/utils.py
@@ -389,6 +389,11 @@ def repo2db_mapper(initial_repo_list, re
rm = RepoModel()
user = sa.query(User).filter(User.admin == True).first()
added = []
+ # fixup groups paths to new format on the fly
+ # TODO: remove this in future
+ for g in Group.query().all():
+ g.group_name = g.get_new_name(g.name)
+ sa.add(g)
for name, repo in initial_repo_list.items():
group = map_groups(name.split(os.sep))
if not rm.get_by_repo_name(name, cache=False):
diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py
--- a/rhodecode/model/db.py
+++ b/rhodecode/model/db.py
@@ -744,6 +744,19 @@ class Group(Base, BaseModel):
self.group_name)
@classmethod
+ def groups_choices(cls):
+ from webhelpers.html import literal as _literal
+ repo_groups = [('', '')]
+ sep = ' » '
+ _name = lambda k: _literal(sep.join(k))
+
+ repo_groups.extend([(x.group_id, _name(x.full_path_splitted))
+ for x in cls.query().all()])
+
+ repo_groups = sorted(repo_groups,key=lambda t: t[1].split(sep)[0])
+ return repo_groups
+
+ @classmethod
def url_sep(cls):
return '/'
diff --git a/rhodecode/templates/summary/summary.html b/rhodecode/templates/summary/summary.html
--- a/rhodecode/templates/summary/summary.html
+++ b/rhodecode/templates/summary/summary.html
@@ -45,17 +45,17 @@
##REPO TYPE
%if c.dbrepo.repo_type =='hg':
-
+
%endif
%if c.dbrepo.repo_type =='git':
-
+
%endif
##PUBLIC/PRIVATE
%if c.dbrepo.private:
-
+
%else:
-
+
%endif
##REPO NAME
@@ -67,7 +67,7 @@
+ src="${h.url('/images/icons/arrow_divide.png')}"/>
${_('Fork of')} ${c.dbrepo.fork.repo_name}
@@ -78,7 +78,7 @@
+ src="${h.url('/images/icons/connect.png')}"/>
${_('Clone from')} ${h.hide_credentials(c.dbrepo.clone_uri)}