• Aurelien Campeas's avatar
    [entity] ensure the .related(entities=False) parameter is honored all the way... · 5567a5117aeb
    Aurelien Campeas authored
    [entity] ensure the .related(entities=False) parameter is honored all the way down (closes #2755994)
    
    As of today, such a call will always fill the relation cache by
    calling .entities() on every single related rset entry.
    
    
    As a consequence, the `limit` parameter handling also had to be fixed.
    It was bogus in the following ways:
    
    * not used in the related_rql, hence potentially huge database
      requests, but also actually
    
    * foolishly used in the .entities()-calling cache routine we now
      bypass (this changeset ticket's main topic)
    
    
    Now:
    
    * we set a limit on the rql expression, and
    
    * forbid caching if given a non-None limit (as we don't want to make
      the cache handling code more complicated than it is already)
    
    
    With this, entity.unrelated gets a better limit implementation (so the
    code in related/unrelated is nice and symmetric)
    
    
    Risk:
    
    * _cw_relation_cache disappears completely, which is good, but this is
      Python, so you never know ...
    5567a5117aeb
unittest_rset.py 23.3 KB