# HG changeset patch # User Marcin Kuzminski # Date 1306101603 -7200 # Node ID a04fe598610924a396b03c5cbb75c399942c337f # Parent 9dacacc5b7c2787a93cb94e9ba22d6ca53799f46 #47 implemented basic gui for browsing repo groups diff -r 9dacacc5b7c2 -r a04fe5986109 rhodecode/controllers/admin/repos_groups.py --- a/rhodecode/controllers/admin/repos_groups.py Sun May 22 21:09:02 2011 +0200 +++ b/rhodecode/controllers/admin/repos_groups.py Mon May 23 00:00:03 2011 +0200 @@ -52,7 +52,7 @@ c.group = Group.get(id) if c.group: - c.group_repos = c.group.repositories + c.group_repos = c.group.repositories.all() else: return redirect(url('repos_group')) @@ -82,6 +82,10 @@ c.repo_cnt = len(c.repos_list) + + c.groups = self.sa.query(Group).order_by(Group.group_name)\ + .filter(Group.group_parent_id == id).all() + return render('admin/repos_groups/repos_groups.html') def edit(self, id, format='html'): diff -r 9dacacc5b7c2 -r a04fe5986109 rhodecode/controllers/home.py --- a/rhodecode/controllers/home.py Sun May 22 21:09:02 2011 +0200 +++ b/rhodecode/controllers/home.py Mon May 23 00:00:03 2011 +0200 @@ -31,7 +31,7 @@ from rhodecode.lib.auth import LoginRequired from rhodecode.lib.base import BaseController, render - +from rhodecode.model.db import Group log = logging.getLogger(__name__) @@ -64,6 +64,12 @@ reverse=False) c.repo_cnt = len(c.repos_list) + + + c.groups = self.sa.query(Group)\ + .filter(Group.group_parent_id == None).all() + + return render('/index.html') def repo_switcher(self): diff -r 9dacacc5b7c2 -r a04fe5986109 rhodecode/model/db.py --- a/rhodecode/model/db.py Sun May 22 21:09:02 2011 +0200 +++ b/rhodecode/model/db.py Mon May 23 00:00:03 2011 +0200 @@ -297,10 +297,12 @@ class Group(Base): __tablename__ = 'groups' __table_args__ = (UniqueConstraint('group_name'), {'useexisting':True},) + __mapper_args__ = {'order_by':'group_name'} group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) group_name = Column("group_name", String(length=255, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None) group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None) + group_description = Column("group_description", String(length=10000, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) parent_group = relationship('Group', remote_side=group_id) @@ -336,7 +338,7 @@ @property def repositories(self): - return Session.query(Repository).filter(Repository.group == self).all() + return Session.query(Repository).filter(Repository.group == self) class Permission(Base): __tablename__ = 'permissions' diff -r 9dacacc5b7c2 -r a04fe5986109 rhodecode/model/scm.py --- a/rhodecode/model/scm.py Sun May 22 21:09:02 2011 +0200 +++ b/rhodecode/model/scm.py Mon May 23 00:00:03 2011 +0200 @@ -119,14 +119,16 @@ return repos_list def get_repos(self, all_repos=None): - """Get all repos from db and for each repo create it's + """ + Get all repos from db and for each repo create it's backend instance and fill that backed with information from database - :param all_repos: give specific repositories list, good for filtering - this have to be a list of just the repository names + :param all_repos: list of repository names as strings + give specific repositories list, good for filtering """ if all_repos is None: repos = self.sa.query(Repository)\ + .filter(Repository.group_id == None)\ .order_by(Repository.repo_name).all() all_repos = [r.repo_name for r in repos] diff -r 9dacacc5b7c2 -r a04fe5986109 rhodecode/templates/admin/repos_groups/repos_groups.html --- a/rhodecode/templates/admin/repos_groups/repos_groups.html Sun May 22 21:09:02 2011 +0200 +++ b/rhodecode/templates/admin/repos_groups/repos_groups.html Mon May 23 00:00:03 2011 +0200 @@ -7,7 +7,12 @@ <%def name="breadcrumbs_links()"> - ${_('Group')} » ${c.group.group_name} - ${_(' %s repositories' % c.repo_cnt)} + ${_('Repository Groups')} + %if c.group.parent_group: + » ${h.link_to(c.group.parent_group.group_name,h.url('repos_group',id=c.group.parent_group.group_id))} + %endif + + » "${c.group.group_name}" ${_('with %s repositories' % c.repo_cnt)} <%def name="page_nav()"> ${self.menu('admin')} @@ -33,6 +38,35 @@
+ % if c.groups: + + + + + + + + + + + ## REPO GROUPS + + % for gr in c.groups: + + + + + + % endfor + +
${_('Group name')}${_('Description')}${_('Number of repositories')}
+
+ ${_('Repositories group')} + ${h.link_to(gr.group_name,url('repos_group',id=gr.group_id))} +
+
${gr.group_description}${gr.repositories.count()}
+
+ % endif @@ -112,7 +146,7 @@ %endif: - %endfor + %endfor
diff -r 9dacacc5b7c2 -r a04fe5986109 rhodecode/templates/index.html --- a/rhodecode/templates/index.html Sun May 22 21:09:02 2011 +0200 +++ b/rhodecode/templates/index.html Mon May 23 00:00:03 2011 +0200 @@ -46,6 +46,35 @@
+ % if c.groups: + + + + + + + + + + + ## REPO GROUPS + + % for gr in c.groups: + + + + + + % endfor + +
${_('Group name')}${_('Description')}${_('Number of repositories')}
+
+ ${_('Repositories group')} + ${h.link_to(gr.group_name,url('repos_group',id=gr.group_id))} +
+
${gr.group_description}${gr.repositories.count()}
+
+ % endif @@ -126,6 +155,7 @@ %endfor +