Ensure in 3.24 migration that entities from LDAP have consistent cwuri
Closes #16666157
--- 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')