misc/scripts/detect_cycle.py
author Rabah Meradi <rabah.meradi@logilab.fr>
Wed, 25 Nov 2015 18:31:48 +0100
changeset 10932 cb217b2b3463
parent 10589 7c23b7de2b8d
permissions -rw-r--r--
[views] remove breadcrumbs usage to retrieve last visited page Use JavaScript history.back to go to the last visited page. Rename _return_to_lastpage to _redirect as it becomes misnamed. Drop `test_redirect_default` test in `unittest_views_basecontrollers` which essentially tested this (now removed) breadcrumbs "feature". Closes #5456850.

from __future__ import print_function

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))