cubicweb/misc/migration/3.24.0_Any.py
branch3.24
changeset 11890 01bfc50e1a47
parent 11808 4a387179fa33
child 11937 7d3ee5a516fa
--- 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')