From 85c1f807cb322cfd45d830f985ea829f5e620494 Mon Sep 17 00:00:00 2001 From: Julien Muchembled <jm@nexedi.com> Date: Tue, 12 Jul 2011 16:24:50 +0200 Subject: [PATCH] migrateToEmbeddedFile: migrate directly to portal type class + option to simulate --- .../ExtensionTemplateItem/BaseMigration.py | 28 +++++++++---------- .../ERP5Site_migrateToEmbeddedFile.xml | 7 +++-- bt5/erp5_base/bt/revision | 2 +- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/bt5/erp5_base/ExtensionTemplateItem/BaseMigration.py b/bt5/erp5_base/ExtensionTemplateItem/BaseMigration.py index 0877ad181b..59eb572276 100644 --- a/bt5/erp5_base/ExtensionTemplateItem/BaseMigration.py +++ b/bt5/erp5_base/ExtensionTemplateItem/BaseMigration.py @@ -26,19 +26,19 @@ # ############################################################################## -def migrateToEmbeddedFile(self): - """ Migrate all embedded "File" and "Image" +import erp5 +from Products.ERP5.Extensions.CheckPortalTypes import changeObjectClass + +def migrateToEmbeddedFile(self, force=0): + """Migrate all embedded "File" and "Image" objects to an unified "Embedded File """ - from Products.ERP5.Extensions.CheckPortalTypes import changeObjectClass - from Products.ERP5.Document.EmbeddedFile import EmbeddedFile - - if self.getPortalType() in ('File', 'Image',) and \ - self.getValidationState()=='embedded': - changeObjectClass(self.getParentValue(), self.id, EmbeddedFile) - instance = getattr(self.getParentValue(), self.id) - instance.portal_type = EmbeddedFile.portal_type - instance.reindexObject() - self.log("Migrated %s" %self.getRelativeUrl()) - return self.getRelativeUrl() - \ No newline at end of file + portal_type = self.getPortalType() + if portal_type in ('File', 'Image') and self.getValidationState()=='embedded': + embedded_type = 'Embedded File' + container = self.getParentValue() + id = self.id + if force == 1: + changeObjectClass(container, id, getattr(erp5.portal_type, embedded_type)) + container._getOb(id).portal_type = embedded_type + return '%s: %s -> %s' % (self.getRelativeUrl(), portal_type, embedded_type), diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/ERP5Site_migrateToEmbeddedFile.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/ERP5Site_migrateToEmbeddedFile.xml index 9df6713ff1..10785ec6ec 100644 --- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/ERP5Site_migrateToEmbeddedFile.xml +++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/ERP5Site_migrateToEmbeddedFile.xml @@ -55,9 +55,10 @@ objects to an unified "Embedded File".\n """\n active_process = context.getPortalObject().portal_activities.newActiveProcess()\n -context.ERP5Site_checkDataWithScript("Base_migrateToEmbeddedFile", \n - tag="migrate",\n - active_process=active_process.getPath())\n +context.ERP5Site_checkDataWithScript("Base_migrateToEmbeddedFile",\n + tag="migrate",\n + active_process=active_process.getPath(),\n + method_kw=dict(force=1))\n \n print "Migration started with process id: %s" %active_process.getPath()\n return printed\n diff --git a/bt5/erp5_base/bt/revision b/bt5/erp5_base/bt/revision index 6f17eede7b..be9c5191bd 100644 --- a/bt5/erp5_base/bt/revision +++ b/bt5/erp5_base/bt/revision @@ -1 +1 @@ -985 \ No newline at end of file +986 \ No newline at end of file -- 2.30.9