diff --git a/rhodecode/model/__init__.py b/rhodecode/model/__init__.py --- a/rhodecode/model/__init__.py +++ b/rhodecode/model/__init__.py @@ -44,7 +44,9 @@ # MA 02110-1301, USA. import logging + from rhodecode.model import meta + log = logging.getLogger(__name__) def init_model(engine): @@ -54,7 +56,7 @@ def init_model(engine): :param engine: engine to bind to """ - log.info("initializing db models for %s", engine) + log.info("initializing db for %s", engine) meta.Base.metadata.bind = engine class BaseModel(object): diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -211,10 +211,29 @@ class Repository(Base): return Session.query(cls).filter(cls.repo_name == repo_name).one() @property + def just_name(self): + return self.repo_name.split('/')[-1] + + @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) + + return groups + + @property def groups_and_repo(self): - just_name = self.repo_name.split('/')[-1] - - return self.group, just_name + return self.groups_with_parents, self.just_name class Group(Base):