misc/migration/3.10.9_Any.py
branchstable
changeset 7050 3f2857704444
parent 7034 1ac9715876e3
child 7104 62c880e5d980
equal deleted inserted replaced
7043:686010f3a83e 7050:3f2857704444
     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')