misc/scripts/detect_cycle.py
author Sylvain Thénault <sylvain.thenault@logilab.fr>
Thu, 27 Jun 2013 08:52:15 +0200 (2013-06-27)
changeset 9462 375fc1868b11
parent 6198 f8dea560703f
child 10589 7c23b7de2b8d
permissions -rw-r--r--
[ldap] simplify connection handling since we deleted ldapuser source, we don't need anymore the get_connection and ConnectionWrapper stuff (that was used to put the ldap connection into the cnxset). Also, we should simply let connection errors propagate so this is properly reported to import logs.

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)