selectors.py
branchstable
changeset 6360 1edfc0f3bb1d
parent 6348 f5bd501628b0
child 6364 ad9ed9803eb6
equal deleted inserted replaced
6359:0bff5a05385c 6360:1edfc0f3bb1d
  1047     def __call__(self, cls, req, rset=None, row=None, col=0, **kwargs):
  1047     def __call__(self, cls, req, rset=None, row=None, col=0, **kwargs):
  1048         if kwargs.get('entity'):
  1048         if kwargs.get('entity'):
  1049             return self.score_entity(kwargs['entity'])
  1049             return self.score_entity(kwargs['entity'])
  1050         if rset is None:
  1050         if rset is None:
  1051             return 0
  1051             return 0
  1052         user = req.user
       
  1053         action = self.action
       
  1054         if row is None:
  1052         if row is None:
  1055             score = 0
  1053             score = 0
  1056             need_local_check = []
  1054             need_local_check = []
  1057             geteschema = req.vreg.schema.eschema
  1055             geteschema = req.vreg.schema.eschema
       
  1056             user = req.user
       
  1057             action = self.action
  1058             for etype in rset.column_types(0):
  1058             for etype in rset.column_types(0):
  1059                 if etype in BASE_TYPES:
  1059                 if etype in BASE_TYPES:
  1060                     return 0
  1060                     return 0
  1061                 eschema = geteschema(etype)
  1061                 eschema = geteschema(etype)
  1062                 if not user.matching_groups(eschema.get_groups(action)):
  1062                 if not user.matching_groups(eschema.get_groups(action)):
  1069                         return 0
  1069                         return 0
  1070                 score += 1
  1070                 score += 1
  1071             if need_local_check:
  1071             if need_local_check:
  1072                 # check local role for entities of necessary types
  1072                 # check local role for entities of necessary types
  1073                 for i, row in enumerate(rset):
  1073                 for i, row in enumerate(rset):
  1074                     if not rset.description[i][0] in need_local_check:
  1074                     if not rset.description[i][col] in need_local_check:
  1075                         continue
  1075                         continue
  1076                     if not self.score(req, rset, i, col):
  1076                     if not self.score(req, rset, i, col):
  1077                         return 0
  1077                         return 0
  1078                 score += 1
  1078                 score += 1
  1079             return score
  1079             return score