<br><br><div class="gmail_quote">2011/3/8 Adrien Di Mascio <span dir="ltr"><<a href="mailto:adrien.dimascio@logilab.fr">adrien.dimascio@logilab.fr</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi everyone,<br>
<br></blockquote><div><br></div><div>Hi,</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Currently, we use *fetch_attrs* to improve attribute cache control and *fetch_order* to control how data should be sorted. This has proven to be very useful and easy to use.<br>
<br>
However, in some complex cases, I'd like to be able to give more complex hints to the ORM. For instance, I might like to :<br>
<br>
- fetch different attributes according to the relation being traversed (not only according to destination type)<br>
<br>
- use RQL functions to change fetch_order<br></blockquote><div><br></div><div>this is not (yet) very palatable to me</div><div>any example ?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br>
- sort according to "composed entities" (e.g. if schema defines "A rel1 B", "B rel2 (composite) C", I might want A.related('rel1') to sort according to C)<br>
<br>
- fetch other relations and other attributes that CubicWeb has no chance to guess<br></blockquote><div><br></div><div>examples ?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br>
- anything fancy<br>
<br>
<br>
I would define and register such helpers in a custom registry, they could define selectors, etc. etc. The ORMHelper interface would be something like::<br>
<br>
    class MyHelper(ORMHelper):<br>
        __select__ = something()<br>
<br>
        def fetch_attrs(self):<br>
            return [xxx]<br>
        def fetch_order(self, rql):<br>
            return some_transformed(rql)<br>
<br>
I haven't give a lot of thoughts on the API actually, this is just a concept I'd like to be discussed.<br>
<br>
Any thoughts ?<br><br></blockquote><div><br></div><div><br></div><div>Sounds good. It occurred to me recently that we might want fetch_attrs to behave differently depending on the context (showing stuff in primary or other views, in import/export process, etc.), so your proposal fits nicely :)</div>
<div><br></div><div>Aurélien. </div></div>