equal
deleted
inserted
replaced
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): |