[req] fix find() generating non-rewritable rql on non final relations
When filtering on a relation, find() was generating rql like
'Any X WHERE X is ETYPE, X relation EID' which work without being rewritten (it
should probably not), but when applying some rewrite (eg. permissions) it raise
in rqlrewrite code.
def _use_orig_term(self, snippet_varname, term):
...
> self.rewritten[key] = term.name
E AttributeError: 'Constant' object has no attribute 'name'
Generate valid rql instead 'Any X WHERE X is ETYPE, X relation Y, Y eid EID'.
from cubicweb.pyramid.test import PyramidCWTest
from cubicweb.pyramid import tools
class ToolsTest(PyramidCWTest):
anonymous_allowed = True
def test_clone_user(self):
with self.admin_access.repo_cnx() as cnx:
user = cnx.find('CWUser', login='anon').one()
user.login # fill the cache
clone = tools.clone_user(self.repo, user)
self.assertEqual(clone.eid, user.eid)
self.assertEqual(clone.login, user.login)
self.assertEqual(clone.cw_rset.rows, user.cw_rset.rows)
self.assertEqual(clone.cw_rset.rql, user.cw_rset.rql)
def test_cnx_attach_entity(self):
with self.admin_access.repo_cnx() as cnx:
user = cnx.find('CWUser', login='anon').one()
with self.admin_access.repo_cnx() as cnx:
tools.cnx_attach_entity(cnx, user)
self.assertEqual(user.login, 'anon')
if __name__ == '__main__':
from unittest import main
main()