selectors.py
changeset 5901 782b27eaf97a
parent 5895 6a3f776292a5
parent 5900 002af94623d3
child 5904 6371b6760dc9
equal deleted inserted replaced
5897:0c6f2f866202 5901:782b27eaf97a
   881             return 0 # relation not supported
   881             return 0 # relation not supported
   882         eschema = eclass.e_schema
   882         eschema = eclass.e_schema
   883         if self.target_etype is not None:
   883         if self.target_etype is not None:
   884             try:
   884             try:
   885                 rdef = rschema.role_rdef(eschema, self.target_etype, self.role)
   885                 rdef = rschema.role_rdef(eschema, self.target_etype, self.role)
   886                 if self.action and not rdef.may_have_permission(self.action, req):
       
   887                     return 0
       
   888             except KeyError:
   886             except KeyError:
       
   887                 return 0
       
   888             if self.action and not rdef.may_have_permission(self.action, req):
       
   889                 return 0
       
   890             teschema = req.vreg.schema.eschema(self.target_etype)
       
   891             if not teschema.may_have_permission('read', req):
   889                 return 0
   892                 return 0
   890         elif self.action:
   893         elif self.action:
   891             return rschema.may_have_permission(self.action, req, eschema, self.role)
   894             return rschema.may_have_permission(self.action, req, eschema, self.role)
   892         return 1
   895         return 1
   893 
   896 
   900                 rschema = rschema.role_rdef(entity.e_schema, self.target_etype, self.role)
   903                 rschema = rschema.role_rdef(entity.e_schema, self.target_etype, self.role)
   901             if self.role == 'subject':
   904             if self.role == 'subject':
   902                 if not rschema.has_perm(entity._cw, self.action, fromeid=entity.eid):
   905                 if not rschema.has_perm(entity._cw, self.action, fromeid=entity.eid):
   903                     return 0
   906                     return 0
   904             elif not rschema.has_perm(entity._cw, self.action, toeid=entity.eid):
   907             elif not rschema.has_perm(entity._cw, self.action, toeid=entity.eid):
       
   908                 return 0
       
   909         if self.target_etype is not None:
       
   910             teschema = entity._cw.vreg.schema.eschema(self.target_etype)
       
   911             if not teschema.may_have_permission('read', req):
   905                 return 0
   912                 return 0
   906         return 1
   913         return 1
   907 
   914 
   908 
   915 
   909 class partial_relation_possible(PartialSelectorMixIn, relation_possible):
   916 class partial_relation_possible(PartialSelectorMixIn, relation_possible):