1 from __future__ import with_statement |
1 from __future__ import with_statement |
|
2 import sys |
2 |
3 |
3 # fix some corrupted entities noticed on several instances |
4 # fix some corrupted entities noticed on several instances |
4 rql('DELETE CWConstraint X WHERE NOT E constrained_by X') |
5 rql('DELETE CWConstraint X WHERE NOT E constrained_by X') |
5 rql('SET X is_instance_of Y WHERE X is Y, NOT X is_instance_of Y') |
6 rql('SET X is_instance_of Y WHERE X is Y, NOT X is_instance_of Y') |
6 commit() |
7 commit() |
7 |
8 |
8 if confirm('fix existing cwuri?'): |
9 if confirm('fix existing cwuri?'): |
9 from logilab.common.shellutils import ProgressBar |
10 from logilab.common.shellutils import ProgressBar |
10 from cubicweb.server.session import hooks_control |
11 from cubicweb.server.session import hooks_control |
11 rset = rql('Any X, XC WHERE X cwuri XC, X cwuri ~= "%/eid/%"') |
12 rset = rql('Any X, XC WHERE X cwuri XC, X cwuri ~= "%/eid/%"') |
12 pb = ProgressBar(nbops=rset.rowcount, size=70) |
13 if sys.stdout.isatty(): |
|
14 pb = ProgressBar(nbops=rset.rowcount, size=70) |
|
15 else: |
|
16 pb = None |
13 with hooks_control(session, session.HOOKS_DENY_ALL, 'integrity'): |
17 with hooks_control(session, session.HOOKS_DENY_ALL, 'integrity'): |
14 for i, e in enumerate(rset.entities()): |
18 for i, e in enumerate(rset.entities()): |
15 e.set_attributes(cwuri=e.cwuri.replace('/eid', '')) |
19 e.set_attributes(cwuri=e.cwuri.replace('/eid', '')) |
16 if i % 100: # commit every 100 entities to limit memory consumption |
20 if i % 100: # commit every 100 entities to limit memory consumption |
17 commit(ask_confirm=False) |
21 commit(ask_confirm=False) |
18 pb.update() |
22 if pb is not None: |
|
23 pb.update() |
19 commit(ask_confirm=False) |
24 commit(ask_confirm=False) |
20 |
25 |
21 try: |
26 try: |
22 from cubicweb import devtools |
27 from cubicweb import devtools |
23 option_group_changed('anonymous-user', 'main', 'web') |
28 option_group_changed('anonymous-user', 'main', 'web') |