[web/facet] Use an Exists node in HasRelationFacet
The generated RQL now includes an EXISTS clause. For instance, one gets:
::
DISTINCT Any WHERE X is CWUser, EXISTS(X in_group A)
instead of:
::
DISTINCT Any WHERE X is CWUser, X in_group A
for a HasRelationFacet with ``rtype = 'in_group'``, which is more appropriate
for testing the existence of the relation.
Add a test for this facet along the way.
try:
rtype, = __args__
except ValueError:
print 'USAGE: cubicweb-ctl shell <instance> detect_cycle.py -- <relation type>'
print
graph = {}
for fromeid, toeid in rql('Any X,Y WHERE X %s Y' % rtype):
graph.setdefault(fromeid, []).append(toeid)
from logilab.common.graph import get_cycles
for cycle in get_cycles(graph):
print 'cycle', '->'.join(str(n) for n in cycle)