[Testbot] Plone 5.0 - Python 2.7 - Build # 2537 - Fixed! - 0 failure(s)

jenkins at plone.org jenkins at plone.org
Tue Jun 3 09:03:31 UTC 2014


-------------------------------------------------------------------------------
Plone 5.0 - Python 2.7 - Build # 2537 - Fixed!
-------------------------------------------------------------------------------

http://jenkins.plone.org/job/plone-5.0-python-2.7/2537/


-------------------------------------------------------------------------------
CHANGES
-------------------------------------------------------------------------------

Repository: plone.app.contenttypes
Branch: refs/heads/master
Date: 2014-06-02T16:37:58+02:00
Author: Philip Bauer (pbauer) <bauer at starzel.de>
Commit: https://github.com/plone/plone.app.contenttypes/commit/3de552efdb0ac1d30f394b12ad72c389a6d40106

Use meta_type instead of interface to show migrateable types (fix #155)

Files changed:
M plone/app/contenttypes/migration/utils.py
M plone/app/contenttypes/migration/vocabularies.py

diff --git a/plone/app/contenttypes/migration/utils.py b/plone/app/contenttypes/migration/utils.py
index f0f2292..15bb12c 100644
--- a/plone/app/contenttypes/migration/utils.py
+++ b/plone/app/contenttypes/migration/utils.py
@@ -82,14 +82,14 @@
         'migrator': migration.migrate_blobimages,
         'extended_fields': ['image'],
         'new_type_name': 'Image',
-        'old_meta_type': 'ATBlobImage',
+        'old_meta_type': 'ATBlob',
     },
     "BlobFile": {
         'iface': IATBlobFile,
         'migrator': migration.migrate_blobfiles,
         'extended_fields': ['file'],
         'new_type_name': 'File',
-        'old_meta_type': 'ATBlobFile',
+        'old_meta_type': 'ATBlob',
     },
 }
 
diff --git a/plone/app/contenttypes/migration/vocabularies.py b/plone/app/contenttypes/migration/vocabularies.py
index e53cbc1..1b5627a 100644
--- a/plone/app/contenttypes/migration/vocabularies.py
+++ b/plone/app/contenttypes/migration/vocabularies.py
@@ -50,24 +50,23 @@ def results(context, show_extended=False):
     """Helper method to create the vocabularies used below.
     """
     ext_dict = {}
-    ifaces = []
+    meta_types = []
     for k, v in ATCT_LIST.items():
-        iface = v['iface'].__identifier__
+        # iface = v['iface'].__identifier__
         extendend_fields = isSchemaExtended(v['iface'])
         expected = v['extended_fields']
         is_extended = len(extendend_fields) > len(expected)
         if is_extended and show_extended:
-            ifaces.append(iface)
+            meta_types.append(v['old_meta_type'])
             ext_dict[k] = {}
             if expected:
                 extendend_fields.remove(expected[0])
             ext_dict[k]['fields'] = extendend_fields
 
         elif not show_extended and not is_extended:
-            ifaces.append(iface)
-
+            meta_types.append(v['old_meta_type'])
     catalog = getToolByName(context, "portal_catalog")
-    brains = catalog.search({'object_provides': ifaces})
+    brains = catalog.search({'meta_type': meta_types})
     counter = count(brains)
 
     return SimpleVocabulary(get_terms(context,


Repository: plone.app.contenttypes
Branch: refs/heads/master
Date: 2014-06-03T10:11:46+02:00
Author: Philip Bauer (pbauer) <bauer at starzel.de>
Commit: https://github.com/plone/plone.app.contenttypes/commit/3b9e0f68c6d5638b97bf44b211cbeeb28549a386

rename new_type_name to type_name (since it will stay the same)
add docstrings
add changenotes

Files changed:
M docs/CHANGES.rst
M plone/app/contenttypes/migration/browser.py
M plone/app/contenttypes/migration/utils.py
M plone/app/contenttypes/migration/vocabularies.py

diff --git a/docs/CHANGES.rst b/docs/CHANGES.rst
index 2a2fa12..fe13a65 100644
--- a/docs/CHANGES.rst
+++ b/docs/CHANGES.rst
@@ -4,6 +4,12 @@ Changelog
 1.2a4 (unreleased)
 ------------------
 
+- Only show migrateable types (fixes #155)
+  [pbauer]
+
+- Add logging during and after migration (fixes #156)
+  [pbauer]
+
 - When replacing the default news and events collections, reverse the
   sort order correctly.
   [maurits]
diff --git a/plone/app/contenttypes/migration/browser.py b/plone/app/contenttypes/migration/browser.py
index a5b2e82..c6ad611 100644
--- a/plone/app/contenttypes/migration/browser.py
+++ b/plone/app/contenttypes/migration/browser.py
@@ -142,7 +142,7 @@ def __call__(self,
             logger.info("Start migrating %s objects from %s to %s" % (
                 amount_to_be_migrated,
                 v['old_meta_type'],
-                v['new_type_name']))
+                v['type_name']))
 
             # call the migrator
             v['migrator'](portal)
@@ -153,14 +153,14 @@ def __call__(self,
             logger.info("Finished migrating %s objects from %s to %s in %s" % (
                 amount_to_be_migrated,
                 v['old_meta_type'],
-                v['new_type_name'],
+                v['type_name'],
                 duration_human))
 
             # some data for the results-page
             migrated_types[k] = {}
             migrated_types[k]['amount_migrated'] = amount_to_be_migrated
             migrated_types[k]['old_meta_type'] = v['old_meta_type']
-            migrated_types[k]['new_type_name'] = v['new_type_name']
+            migrated_types[k]['type_name'] = v['type_name']
 
         # if there are blobnewsitems we just migrate them silently.
         migration.migrate_blobnewsitems(portal)
diff --git a/plone/app/contenttypes/migration/utils.py b/plone/app/contenttypes/migration/utils.py
index 15bb12c..e2228cb 100644
--- a/plone/app/contenttypes/migration/utils.py
+++ b/plone/app/contenttypes/migration/utils.py
@@ -32,63 +32,65 @@
         'iface': IATFolder,
         'migrator': migration.migrate_folders,
         'extended_fields': [],
-        'new_type_name': 'Folder',
+        'type_name': 'Folder',
         'old_meta_type': 'ATFolder',
     },
     "Document": {
         'iface': IATDocument,
         'migrator': migration.migrate_documents,
         'extended_fields': [],
-        'new_type_name': 'Document',
+        'type_name': 'Document',
         'old_meta_type': 'ATDocument',
     },
+    # File without blobs
     "File": {
         'iface': IATFile,
         'migrator': migration.migrate_files,
-        'extended_fields': ['file'],
-        'new_type_name': 'File',
+        'extended_fields': [],
+        'type_name': 'File',
         'old_meta_type': 'ATFile',
     },
+    # Image without blobs
     "Image": {
         'iface': IATImage,
         'migrator': migration.migrate_images,
-        'extended_fields': ['image'],
-        'new_type_name': 'Image',
+        'extended_fields': [],
+        'type_name': 'Image',
         'old_meta_type': 'ATImage',
     },
     "News Item": {
         'iface': IATNewsItem,
         'migrator': migration.migrate_newsitems,
         'extended_fields': [],
-        'new_type_name': 'News Item',
+        'type_name': 'News Item',
         'old_meta_type': 'ATNewsItem',
     },
     "Link": {
         'iface': IATLink,
         'migrator': migration.migrate_links,
         'extended_fields': [],
-        'new_type_name': 'Link',
+        'type_name': 'Link',
         'old_meta_type': 'ATLink',
     },
     "Event": {
         'iface': IATEvent,
         'migrator': migration.migrate_events,
         'extended_fields': [],
-        'new_type_name': 'Event',
+        'type_name': 'Event',
         'old_meta_type': 'ATEvent',
     },
     "BlobImage": {
         'iface': IATBlobImage,
         'migrator': migration.migrate_blobimages,
         'extended_fields': ['image'],
-        'new_type_name': 'Image',
+        'type_name': 'Image',
         'old_meta_type': 'ATBlob',
     },
     "BlobFile": {
         'iface': IATBlobFile,
         'migrator': migration.migrate_blobfiles,
         'extended_fields': ['file'],
-        'new_type_name': 'File',
+        'type_name': 'File',
         'old_meta_type': 'ATBlob',
     },
 }
@@ -98,7 +100,7 @@
         'iface': ICollection,
         'migrator': migration.migrate_collections,
         'extended_fields': [],
-        'new_type_name': 'Collection',
+        'type_name': 'Collection',
         'old_meta_type': 'Collection',
     }
 
diff --git a/plone/app/contenttypes/migration/vocabularies.py b/plone/app/contenttypes/migration/vocabularies.py
index 1b5627a..9bdaa57 100644
--- a/plone/app/contenttypes/migration/vocabularies.py
+++ b/plone/app/contenttypes/migration/vocabularies.py
@@ -9,6 +9,12 @@
 
 
 def get_terms(context, counter, ext_dict, show_extended):
+    """Takes dicts of types and their numbers and their extended fields
+    Returns a list of SimpleVocabularyTerms:
+    value = meta_type,
+    token = meta_type,
+    title = translated_meta_type (number_of_instances) - extended fields: list
+    """
     results = []
     for k, v in counter.iteritems():
         if not show_extended:
@@ -29,17 +35,21 @@ def get_terms(context, counter, ext_dict, show_extended):
 
 
 def count(brains):
+    """Turns a list of brains into a dict {<meta_type>:<number_of_instances>,}
+    Since Image and File both have the meta_type 'ATBlob' they are handled
+    differently.
+    """
     counter = {}
-    for i in brains:
-        pt = i.portal_type
-        if "Blob" in i.meta_type:
+    for brain in brains:
+        pt = brain.portal_type
+        if "Blob" in brain.meta_type:
             if pt == "File":
                 pt = "BlobFile"
             else:
                 pt = "BlobImage"
         if not counter.get(pt):
             counter[pt] = 0
-        if not i.meta_type or 'dexterity' in i.meta_type.lower():
+        if not brain.meta_type or 'dexterity' in brain.meta_type.lower():
             # There might be DX types with same iface and meta_type than AT
             continue
         counter[pt] += 1
@@ -48,11 +58,13 @@ def count(brains):
 
 def results(context, show_extended=False):
     """Helper method to create the vocabularies used below.
+    Searches the catalog for AT-meta_types to get all Archetypes content.
+    If show_extended is true the returned SimpleVocabulary will include
+    types that are extended beyond what is expected.
     """
     ext_dict = {}
     meta_types = []
     for k, v in ATCT_LIST.items():
-        # iface = v['iface'].__identifier__
         extendend_fields = isSchemaExtended(v['iface'])
         expected = v['extended_fields']
         is_extended = len(extendend_fields) > len(expected)


Repository: plone.app.contenttypes
Branch: refs/heads/master
Date: 2014-06-03T10:16:30+02:00
Author: Philip Bauer (pbauer) <bauer at starzel.de>
Commit: https://github.com/plone/plone.app.contenttypes/commit/6ccf94fc7a122e85f6b2aaf93994ded7a080c4aa

Merge pull request #158 from plone/issue155_show_migrateable_types

Use meta_type instead of interface to show migrateable types (fix #155)

Files changed:
M docs/CHANGES.rst
M plone/app/contenttypes/migration/browser.py
M plone/app/contenttypes/migration/utils.py
M plone/app/contenttypes/migration/vocabularies.py

diff --git a/docs/CHANGES.rst b/docs/CHANGES.rst
index 2a2fa12..fe13a65 100644
--- a/docs/CHANGES.rst
+++ b/docs/CHANGES.rst
@@ -4,6 +4,12 @@ Changelog
 1.2a4 (unreleased)
 ------------------
 
+- Only show migrateable types (fixes #155)
+  [pbauer]
+
+- Add logging during and after migration (fixes #156)
+  [pbauer]
+
 - When replacing the default news and events collections, reverse the
   sort order correctly.
   [maurits]
diff --git a/plone/app/contenttypes/migration/browser.py b/plone/app/contenttypes/migration/browser.py
index a5b2e82..c6ad611 100644
--- a/plone/app/contenttypes/migration/browser.py
+++ b/plone/app/contenttypes/migration/browser.py
@@ -142,7 +142,7 @@ def __call__(self,
             logger.info("Start migrating %s objects from %s to %s" % (
                 amount_to_be_migrated,
                 v['old_meta_type'],
-                v['new_type_name']))
+                v['type_name']))
 
             # call the migrator
             v['migrator'](portal)
@@ -153,14 +153,14 @@ def __call__(self,
             logger.info("Finished migrating %s objects from %s to %s in %s" % (
                 amount_to_be_migrated,
                 v['old_meta_type'],
-                v['new_type_name'],
+                v['type_name'],
                 duration_human))
 
             # some data for the results-page
             migrated_types[k] = {}
             migrated_types[k]['amount_migrated'] = amount_to_be_migrated
             migrated_types[k]['old_meta_type'] = v['old_meta_type']
-            migrated_types[k]['new_type_name'] = v['new_type_name']
+            migrated_types[k]['type_name'] = v['type_name']
 
         # if there are blobnewsitems we just migrate them silently.
         migration.migrate_blobnewsitems(portal)
diff --git a/plone/app/contenttypes/migration/utils.py b/plone/app/contenttypes/migration/utils.py
index f0f2292..e2228cb 100644
--- a/plone/app/contenttypes/migration/utils.py
+++ b/plone/app/contenttypes/migration/utils.py
@@ -32,64 +32,66 @@
         'iface': IATFolder,
         'migrator': migration.migrate_folders,
         'extended_fields': [],
-        'new_type_name': 'Folder',
+        'type_name': 'Folder',
         'old_meta_type': 'ATFolder',
     },
     "Document": {
         'iface': IATDocument,
         'migrator': migration.migrate_documents,
         'extended_fields': [],
-        'new_type_name': 'Document',
+        'type_name': 'Document',
         'old_meta_type': 'ATDocument',
     },
+    # File without blobs
     "File": {
         'iface': IATFile,
         'migrator': migration.migrate_files,
-        'extended_fields': ['file'],
-        'new_type_name': 'File',
+        'extended_fields': [],
+        'type_name': 'File',
         'old_meta_type': 'ATFile',
     },
+    # Image without blobs
     "Image": {
         'iface': IATImage,
         'migrator': migration.migrate_images,
-        'extended_fields': ['image'],
-        'new_type_name': 'Image',
+        'extended_fields': [],
+        'type_name': 'Image',
         'old_meta_type': 'ATImage',
     },
     "News Item": {
         'iface': IATNewsItem,
         'migrator': migration.migrate_newsitems,
         'extended_fields': [],
-        'new_type_name': 'News Item',
+        'type_name': 'News Item',
         'old_meta_type': 'ATNewsItem',
     },
     "Link": {
         'iface': IATLink,
         'migrator': migration.migrate_links,
         'extended_fields': [],
-        'new_type_name': 'Link',
+        'type_name': 'Link',
         'old_meta_type': 'ATLink',
     },
     "Event": {
         'iface': IATEvent,
         'migrator': migration.migrate_events,
         'extended_fields': [],
-        'new_type_name': 'Event',
+        'type_name': 'Event',
         'old_meta_type': 'ATEvent',
     },
     "BlobImage": {
         'iface': IATBlobImage,
         'migrator': migration.migrate_blobimages,
         'extended_fields': ['image'],
-        'new_type_name': 'Image',
-        'old_meta_type': 'ATBlobImage',
+        'type_name': 'Image',
+        'old_meta_type': 'ATBlob',
     },
     "BlobFile": {
         'iface': IATBlobFile,
         'migrator': migration.migrate_blobfiles,
         'extended_fields': ['file'],
-        'new_type_name': 'File',
-        'old_meta_type': 'ATBlobFile',
+        'type_name': 'File',
+        'old_meta_type': 'ATBlob',
     },
 }
 
@@ -98,7 +100,7 @@
         'iface': ICollection,
         'migrator': migration.migrate_collections,
         'extended_fields': [],
-        'new_type_name': 'Collection',
+        'type_name': 'Collection',
         'old_meta_type': 'Collection',
     }
 
diff --git a/plone/app/contenttypes/migration/vocabularies.py b/plone/app/contenttypes/migration/vocabularies.py
index e53cbc1..9bdaa57 100644
--- a/plone/app/contenttypes/migration/vocabularies.py
+++ b/plone/app/contenttypes/migration/vocabularies.py
@@ -9,6 +9,12 @@
 
 
 def get_terms(context, counter, ext_dict, show_extended):
+    """Takes dicts of types and their numbers and their extended fields
+    Returns a list of SimpleVocabularyTerms:
+    value = meta_type,
+    token = meta_type,
+    title = translated_meta_type (number_of_instances) - extended fields: list
+    """
     results = []
     for k, v in counter.iteritems():
         if not show_extended:
@@ -29,17 +35,21 @@ def get_terms(context, counter, ext_dict, show_extended):
 
 
 def count(brains):
+    """Turns a list of brains into a dict {<meta_type>:<number_of_instances>,}
+    Since Image and File both have the meta_type 'ATBlob' they are handled
+    differently.
+    """
     counter = {}
-    for i in brains:
-        pt = i.portal_type
-        if "Blob" in i.meta_type:
+    for brain in brains:
+        pt = brain.portal_type
+        if "Blob" in brain.meta_type:
             if pt == "File":
                 pt = "BlobFile"
             else:
                 pt = "BlobImage"
         if not counter.get(pt):
             counter[pt] = 0
-        if not i.meta_type or 'dexterity' in i.meta_type.lower():
+        if not brain.meta_type or 'dexterity' in brain.meta_type.lower():
             # There might be DX types with same iface and meta_type than AT
             continue
         counter[pt] += 1
@@ -48,26 +58,27 @@ def count(brains):
 
 def results(context, show_extended=False):
     """Helper method to create the vocabularies used below.
+    Searches the catalog for AT-meta_types to get all Archetypes content.
+    If show_extended is true the returned SimpleVocabulary will include
+    types that are extended beyond what is expected.
     """
     ext_dict = {}
-    ifaces = []
+    meta_types = []
     for k, v in ATCT_LIST.items():
-        iface = v['iface'].__identifier__
         extendend_fields = isSchemaExtended(v['iface'])
         expected = v['extended_fields']
         is_extended = len(extendend_fields) > len(expected)
         if is_extended and show_extended:
-            ifaces.append(iface)
+            meta_types.append(v['old_meta_type'])
             ext_dict[k] = {}
             if expected:
                 extendend_fields.remove(expected[0])
             ext_dict[k]['fields'] = extendend_fields
 
         elif not show_extended and not is_extended:
-            ifaces.append(iface)
-
+            meta_types.append(v['old_meta_type'])
     catalog = getToolByName(context, "portal_catalog")
-    brains = catalog.search({'object_provides': ifaces})
+    brains = catalog.search({'meta_type': meta_types})
     counter = count(brains)
 
     return SimpleVocabulary(get_terms(context,




-------------------------------------------------------------------------------


More information about the Testbot mailing list