<div dir="ltr"><div>If I have access to the RelationDefinition derived class, can I reach the RelationType and modify the permission there ?<br><br></div><div>I will not use comment in my cube, I could just skip it. But I cannot use try/catch in schema.py because the error is raised later (unless I am wrong). Can I detect relation definition with permissions customized on relation type ?<br>

</div><div><br></div>Before posting my question, I searched internet with the error message and found a piece of code (not working) where set_permissions had a reset=True parameter. Could it be a solution to allow a user to say : "I really want to override permissions" ?<br>

</div><div class="gmail_extra"><br clear="all"><div>Yann Cointepas            Tel: +33 1 69 08 78 31<br>CEA - Neurospin           Fax: +33 1 69 08 79 80<br>Bâtiment 145, Point Courrier 156<br>91191 Gif-sur-Yvette cedex, France</div>


<br><br><div class="gmail_quote">On Tue, Jan 7, 2014 at 3:16 PM, Aurélien Campéas <span dir="ltr"><<a href="mailto:aurelien.campeas@logilab.fr" target="_blank">aurelien.campeas@logilab.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hello,<br>
<div><div class="h5"><br>
On 07/01/2014 14:54, Yann Cointepas wrote:<br>
> I am trying to define permissions for all entities and relations used in<br>
> a cube. At the end of schema.py of my cube I import all the<br>
> entities/relations I use and call set_permissions on them. It works for<br>
> entities but on relations, Cubicweb complains :<br>
><br>
> yams._exceptions.BadSchemaDefinition: conflicting values {'read':<br>
> ('managers', 'users'), 'add': ('managers', RRQLExpression(Any S,U WHERE<br>
> S belong_to ST, U can_modify ST, S eid %(s)s, U eid %(u)s)), 'delete':<br>
> ('managers', RRQLExpression(Any S,U WHERE S belong_to ST, U can_modify<br>
> ST, S eid %(s)s, U eid %(u)s))}/{'read': ('managers', 'users',<br>
> 'guests'), 'add': ('managers', 'users'), 'delete': ('managers',<br>
> RRQLExpression(Any S,U WHERE S owned_by U, S eid %(s)s, U eid %(u)s))}<br>
> for property __permissions__ of relation 'comments'<br>
><br>
><br>
> The "comments" relation have the following definition (in<br>
> cubicweb-brainomics) :<br>
><br>
> class comments(RelationDefinition):<br>
>     subject = 'Comment'<br>
>     object = COMMENTED_ENTITIES<br>
><br>
><br>
> I am trying to set the following permissions:<br>
><br>
> RELATION_PERMISSIONS = {<br>
>   'read':   ( 'managers', 'users' ),<br>
>   'add':    ( 'managers', RRQLExpression( 'S belong_to ST, U can_modify<br>
> ST' ) ),<br>
>   'delete': ( 'managers', RRQLExpression( 'S belong_to ST, U can_modify<br>
> ST' ) )<br>
> }<br>
><br>
><br>
<br>
</div></div>This is because of a "bug" (or at least a controversial feature) where<br>
defining permissions on a RelationType forbids refining permissions<br>
on RelationDefinitions.<br>
<br>
Unfortunately, the comment cube does the following::<br>
<br>
 class comments(RelationType):<br>
     __permissions__ = {<br>
<div class="im">         'read':   ('managers', 'users', 'guests'),<br>
</div>         'add':    ('managers', 'users',),<br>
         'delete': ('managers', RRQLExpression('S owned_by U'),),<br>
         }<br>
<br>
Hence the yams exception.<br>
<br>
I'm all for a definitive fix for this in yams.<br>
<br>
Regards,<br>
Aurélien.<br>
<br>
_______________________________________________<br>
Cubicweb mailing list<br>
<a href="mailto:Cubicweb@lists.cubicweb.org">Cubicweb@lists.cubicweb.org</a><br>
<a href="http://lists.cubicweb.org/mailman/listinfo/cubicweb" target="_blank">http://lists.cubicweb.org/mailman/listinfo/cubicweb</a><br>
</blockquote></div><br></div>