changeset 1155:37a9421f32a0 beta

Added handy methods to Repository model for fetching groups with parents
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 18 Mar 2011 22:04:21 +0100
parents 36fe593dfe4b
children c9a9e0b3baf8
files rhodecode/model/__init__.py rhodecode/model/db.py
diffstat 2 files changed, 25 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/model/__init__.py	Fri Mar 18 19:39:48 2011 +0100
+++ b/rhodecode/model/__init__.py	Fri Mar 18 22:04:21 2011 +0100
@@ -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 @@
     
     :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):
--- a/rhodecode/model/db.py	Fri Mar 18 19:39:48 2011 +0100
+++ b/rhodecode/model/db.py	Fri Mar 18 22:04:21 2011 +0100
@@ -211,10 +211,29 @@
         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):