From d4ecc24738b8a835775daaa2d58cd0d4c60db52a Mon Sep 17 00:00:00 2001 From: olivier Date: Mon, 15 Feb 2010 19:56:19 +0000 Subject: [PATCH] allow revision user field to be null, add collections and items import revisions builders git-svn-id: http://svn.parisson.org/svn/crem@157 3bf09e05-f825-4182-b9bc-eedd7160adf0 --- trunk/docref/crem.sql | 4 ++-- trunk/docref/docref.odt | Bin 65165 -> 65176 bytes trunk/import/migration/tasks/collections.py | 16 ++++++++++++++++ trunk/import/migration/tasks/items.py | 15 +++++++++++++++ 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/trunk/docref/crem.sql b/trunk/docref/crem.sql index aac764f..4c4fcb1 100644 --- a/trunk/docref/crem.sql +++ b/trunk/docref/crem.sql @@ -422,9 +422,9 @@ CREATE TABLE revisions ( 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; diff --git a/trunk/docref/docref.odt b/trunk/docref/docref.odt index a1482ead57d929ffa0c0376aed42034ad381152d..1373847645371a11e83f5080851315798d7ef347 100644 GIT binary patch delta 23687 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 diff --git a/trunk/import/migration/tasks/collections.py b/trunk/import/migration/tasks/collections.py index 7c176a8..3c0b4bf 100644 --- a/trunk/import/migration/tasks/collections.py +++ b/trunk/import/migration/tasks/collections.py @@ -37,6 +37,7 @@ from core import DataMigrator, EnumMapper 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""" @@ -372,3 +373,18 @@ class CollectionsPublishedStateMigrator(DataMigrator): 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() diff --git a/trunk/import/migration/tasks/items.py b/trunk/import/migration/tasks/items.py index b00b67e..dc6a751 100644 --- a/trunk/import/migration/tasks/items.py +++ b/trunk/import/migration/tasks/items.py @@ -37,6 +37,7 @@ from core import DataMigrator, EnumMapper from geoethno import GeoEthnoImporter import re import sys +from datetime import datetime class ItemsCopyMigrator(DataMigrator): """Perform a preliminary raw copy of the item table""" @@ -344,6 +345,20 @@ class ItemsTitleCleaner(DataMigrator): 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() -- 2.39.5