# HG changeset patch # User Sylvain Thénault # Date 1481701626 -3600 # Node ID 01bfc50e1a47dbe676ccb5eff74c17f259a70fe9 # Parent 207e6d088791354815cf35a7ec38cea90acb1f92 Ensure in 3.24 migration that entities from LDAP have consistent cwuri Closes #16666157 diff -r 207e6d088791 -r 01bfc50e1a47 cubicweb/misc/migration/3.24.0_Any.py --- a/cubicweb/misc/migration/3.24.0_Any.py Wed Dec 14 13:34:08 2016 +0100 +++ b/cubicweb/misc/migration/3.24.0_Any.py Wed Dec 14 08:47:06 2016 +0100 @@ -1,3 +1,6 @@ +from base64 import b64decode + + # Check the CW versions and add the entity only if needed ? add_entity_type('CWSession') rql('DELETE CWProperty X WHERE X pkey "system.version.pyramid"', @@ -5,6 +8,12 @@ sql('DROP TABLE moved_entities') sql('ALTER TABLE entities DROP COLUMN asource') +# before removing extid, ensure it's coherent with cwuri +for eid, etype, encoded_extid in sql( + "SELECT eid, type, extid FROM entities, cw_CWSource " + "WHERE cw_CWSource.cw_name=entities.asource AND cw_CWSource.cw_type='ldapfeed'"): + sql('UPDATE cw_{} SET cw_cwuri=%(cwuri)s WHERE cw_eid=%(eid)s'.format(etype), + {'eid': eid, 'cwuri': b64decode(encoded_extid)}) sql('ALTER TABLE entities DROP COLUMN extid') sql('DROP INDEX entities_type_idx')