def migrate_leadimage(source_object, target_object): """ Migrate images added using collective.contentleadimage to the ILeadImage-behavior of plone.app.contenttypes if it is enabled. """ OLD_LEADIMAGE_FIELD_NAME = 'leadImage' OLD_CAPTION_FIELD_NAME = 'leadImage_caption' NEW_LEADIMAGE_FIELD_NAME = 'image' NEW_CAPTION_FIELD_NAME = 'image_caption' if not source_object.getField(OLD_LEADIMAGE_FIELD_NAME): # skip if old content has no field return if ILeadImage(target_object, None) is None: # skip if new content does not have the LeadImage-behavior enabled logger.info("Target does not have the behavior 'Lead Image' enabled. " "Could not migrate collective.leadimage fields.") return # handle image field migrate_imagefield(source_object, target_object, OLD_LEADIMAGE_FIELD_NAME, NEW_LEADIMAGE_FIELD_NAME) # handle image caption field migrate_simplefield(source_object, target_object, OLD_CAPTION_FIELD_NAME, NEW_CAPTION_FIELD_NAME) logger.info("Migrating contentlead image for." % target_object.absolute_url())
def migrate_leadimage(source_object, target_object): """ Migrate images added using collective.contentleadimage to the ILeadImage-behavior of plone.app.contenttypes if it is enabled. """ OLD_LEADIMAGE_FIELD_NAME = 'leadImage' OLD_CAPTION_FIELD_NAME = 'leadImage_caption' NEW_LEADIMAGE_FIELD_NAME = 'image' NEW_CAPTION_FIELD_NAME = 'image_caption' if not source_object.getField(OLD_LEADIMAGE_FIELD_NAME): # skip if old content has no field return if ILeadImage(target_object, None) is None: # skip if new content does not have the LeadImage-behavior enabled logger.info('Target does not have the behavior "Lead Image" enabled. ' 'Could not migrate collective.leadimage fields.') return acc = source_object.getField(OLD_LEADIMAGE_FIELD_NAME).getAccessor( source_object)() if getattr(acc, 'filename', None) is None: # skip if old content has field but has no lead image in the field return # handle image field migrate_imagefield(source_object, target_object, OLD_LEADIMAGE_FIELD_NAME, NEW_LEADIMAGE_FIELD_NAME) # handle image caption field migrate_simplefield(source_object, target_object, OLD_CAPTION_FIELD_NAME, NEW_CAPTION_FIELD_NAME) logger.info('Migrating contentlead image for {0}.'.format( target_object.absolute_url()))
def migrate_schema_fields(self): migrate_simplefield(self.old, self.new, 'artist', 'artist') migrate_simplefield(self.old, self.new, 'country', 'country') migrate_simplefield(self.old, self.new, 'year', 'year') migrate_richtextfield(self.old, self.new, 'notes', 'notes') migrate_simplefield(self.old, self.new, 'imgUrl', 'img_url') migrate_imagefield(self.old, self.new, 'image', 'image')
def migrate_leadimage(source_object, target_object): """ Migrate images added using collective.contentleadimage to the ILeadImage-behavior of plone.app.contenttypes if it is enabled. """ OLD_LEADIMAGE_FIELD_NAME = 'leadImage' OLD_CAPTION_FIELD_NAME = 'leadImage_caption' NEW_LEADIMAGE_FIELD_NAME = 'image' NEW_CAPTION_FIELD_NAME = 'image_caption' if not source_object.getField(OLD_LEADIMAGE_FIELD_NAME): # skip if old content has no field return if ILeadImage(target_object, None) is None: # skip if new content does not have the LeadImage-behavior enabled logger.info("Target does not have the behavior 'Lead Image' enabled. " "Could not migrate collective.leadimage fields.") return # handle image field migrate_imagefield( source_object, target_object, OLD_LEADIMAGE_FIELD_NAME, NEW_LEADIMAGE_FIELD_NAME) # handle image caption field migrate_simplefield( source_object, target_object, OLD_CAPTION_FIELD_NAME, NEW_CAPTION_FIELD_NAME) logger.info( "Migrating contentlead image for." % target_object.absolute_url())
def test_migrate_imagefield(self): test_image_data = self.get_test_image_data() at_newsitem_id = self.portal.invokeFactory('News Item', 'foo', title="Foo news", image=test_image_data) # register p.a.contenttypes profile applyProfile(self.portal, 'plone.app.contenttypes:default') dx_newsitem_id = self.portal.invokeFactory('News Item', 'bar', title="Bar news") at_newsitem = self.portal[at_newsitem_id] dx_newsitem = self.portal[dx_newsitem_id] self.assertEqual(dx_newsitem.image, None) migrate_imagefield(at_newsitem, dx_newsitem, 'image', 'image') self.assertEqual(dx_newsitem.image.contentType, 'image/png') self.assertEqual(dx_newsitem.image.data, test_image_data)
def test_migrate_imagefield(self): test_image_data = self.get_test_image_data() at_newsitem_id = self.portal.invokeFactory( 'News Item', 'foo', title="Foo news", image=test_image_data) # register p.a.contenttypes profile applyProfile(self.portal, 'plone.app.contenttypes:default') dx_newsitem_id = self.portal.invokeFactory( 'News Item', 'bar', title="Bar news") at_newsitem = self.portal[at_newsitem_id] dx_newsitem = self.portal[dx_newsitem_id] self.assertEqual(dx_newsitem.image, None) migrate_imagefield(at_newsitem, dx_newsitem, 'image', 'image') self.assertEqual(dx_newsitem.image.contentType, 'image/png') self.assertEqual(dx_newsitem.image.data, test_image_data)
def migrate_leadimage(source_object, target_object): """ Migrate images added using collective.contentleadimage to the ILeadImage-behavior of plone.app.contenttypes if it is enabled. """ OLD_LEADIMAGE_FIELD_NAME = 'leadImage' OLD_CAPTION_FIELD_NAME = 'leadImage_caption' NEW_LEADIMAGE_FIELD_NAME = 'image' NEW_CAPTION_FIELD_NAME = 'image_caption' if not source_object.getField(OLD_LEADIMAGE_FIELD_NAME): # skip if old content has no field return if ILeadImage(target_object, None) is None: # skip if new content does not have the LeadImage-behavior enabled logger.info('Target does not have the behavior "Lead Image" enabled. ' 'Could not migrate collective.leadimage fields.') return acc = source_object.getField( OLD_LEADIMAGE_FIELD_NAME).getAccessor(source_object)() if getattr(acc, 'filename', None) is None: # skip if old content has field but has no lead image in the field return # handle image field migrate_imagefield( source_object, target_object, OLD_LEADIMAGE_FIELD_NAME, NEW_LEADIMAGE_FIELD_NAME) # handle image caption field migrate_simplefield( source_object, target_object, OLD_CAPTION_FIELD_NAME, NEW_CAPTION_FIELD_NAME) logger.info('Migrating contentlead image for {0}.'.format( target_object.absolute_url()) )
def migrate_schema_fields(self): migrate_richtextfield(self.old, self.new, 'text', 'text') migrate_imagefield(self.old, self.new, 'image', 'image') migrate_simplefield(self.old, self.new, 'imageCaption', 'imageCaption')
def migrate_schema_fields(self): migrate_imagefield(self.old, self.new, 'image', 'image')