id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
element_type VARCHAR(32) NOT NULL,
element_id INTEGER NOT NULL,
- change_type ENUM('create', 'update', 'delete') NOT NULL,
+ change_type ENUM('import', 'create', 'update', 'delete') NOT NULL,
time DATETIME NOT NULL,
- username VARCHAR(64) NOT NULL,
+ username VARCHAR(64),
FOREIGN KEY(username) REFERENCES users (username)
) CHARACTER SET='utf8' ENGINE=InnoDB;
from _mysql_exceptions import IntegrityError
from MySQLdb.constants.ER import DUP_ENTRY
import re
+from datetime import datetime
class CollectionsCopyMigrator(DataMigrator):
"""Perform a preliminary raw copy of the collection table"""
self.target_cursor.execute("UPDATE media_collections SET is_published = (old_code LIKE 'DI.%')")
self.stats['published'] = self.target_cursor.rowcount
self.end()
+
+class CollectionRevisionsBuilder(DataMigrator):
+ """Insert initial import revisions for all collections"""
+
+ implements(IDataMigrator)
+
+ def get_name(self):
+ return "collections:revisions"
+
+ def process(self):
+ self.start()
+ self.target("DELETE FROM revisions WHERE element_type = 'collection'")
+ self.target("INSERT INTO revisions (element_type, element_id, change_type, time) "
+ "SELECT 'collection', id, 'import', %s FROM media_collections", (datetime.now()))
+ self.end()
from geoethno import GeoEthnoImporter
import re
import sys
+from datetime import datetime
class ItemsCopyMigrator(DataMigrator):
"""Perform a preliminary raw copy of the item table"""
self.stats['emptied'] = self.target_cursor.rowcount
self.end()
+class ItemRevisionsBuilder(DataMigrator):
+ """Insert initial import revisions for all items"""
+
+ implements(IDataMigrator)
+
+ def get_name(self):
+ return "items:revisions"
+
+ def process(self):
+ self.start()
+ self.target("DELETE FROM revisions WHERE element_type = 'item'")
+ self.target("INSERT INTO revisions (element_type, element_id, change_type, time) "
+ "SELECT 'item', id, 'import', %s FROM media_items", (datetime.now()))
+ self.end()