Browse Source

Bug #1237 : getChildrenOfType take Rights in account

sferot 11 years ago
parent
commit
953c0b1e87
2 changed files with 8 additions and 4 deletions
  1. 0 1
      pboard/pboard/lib/base.py
  2. 8 3
      pboard/pboard/model/data.py

+ 0 - 1
pboard/pboard/lib/base.py View File

6
 from tg.render import render
6
 from tg.render import render
7
 from tg import request, redirect
7
 from tg import request, redirect
8
 from tg.i18n import ugettext as _, ungettext
8
 from tg.i18n import ugettext as _, ungettext
9
-import pboard.model as model
10
 
9
 
11
 __all__ = ['BaseController']
10
 __all__ = ['BaseController']
12
 
11
 

+ 8 - 3
pboard/pboard/model/data.py View File

23
 import tg
23
 import tg
24
 from pboard.model import DeclarativeBase, metadata, DBSession
24
 from pboard.model import DeclarativeBase, metadata, DBSession
25
 from pboard.model import auth as pma
25
 from pboard.model import auth as pma
26
+from pboard.lib.base import current_user
26
 
27
 
27
 
28
 
28
 class PBNodeStatusItem(object):
29
 class PBNodeStatusItem(object):
201
   def getChildrenOfType(self, plNodeTypeList, poKeySortingMethod=None, pbDoReverseSorting=False):
202
   def getChildrenOfType(self, plNodeTypeList, poKeySortingMethod=None, pbDoReverseSorting=False):
202
     """return all children nodes of type 'data' or 'node' or 'folder'"""
203
     """return all children nodes of type 'data' or 'node' or 'folder'"""
203
     llChildren = []
204
     llChildren = []
204
-    for child in self._lAllChildren:
205
-      if child.node_type in plNodeTypeList:
206
-        llChildren.append(child)
205
+    user_id = current_user().user_id
206
+    llChildren = DBSession.query(PBNode).outerjoin(pma.Rights)\
207
+            .outerjoin(pma.user_group_table, pma.Rights.group_id==pma.user_group_table.columns['group_id'])\
208
+            .filter(PBNode.parent_id==self.node_id)\
209
+            .filter((PBNode.owner_id==user_id) | ((pma.user_group_table.c.user_id==user_id) & (PBNode.is_shared == True)))\
210
+            .filter(PBNode.node_type.in_(plNodeTypeList))\
211
+            .all()
207
     if poKeySortingMethod!=None:
212
     if poKeySortingMethod!=None:
208
       llChildren = sorted(llChildren, key=poKeySortingMethod, reverse=pbDoReverseSorting)
213
       llChildren = sorted(llChildren, key=poKeySortingMethod, reverse=pbDoReverseSorting)
209
     return llChildren
214
     return llChildren