[Checkins] SVN: Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to22.py - some metadata tools neither have a _DCMI nor a DCMI attribute

Yvo Schubbe y.2009 at wcm-solutions.de
Thu Dec 10 11:23:47 EST 2009


Log message for revision 106413:
  - some metadata tools neither have a _DCMI nor a DCMI attribute
  - also override the 'Discussion Item' workflow if no override exists

Changed:
  U   Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to22.py

-=-
Modified: Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to22.py
===================================================================
--- Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to22.py	2009-12-10 16:21:10 UTC (rev 106412)
+++ Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to22.py	2009-12-10 16:23:46 UTC (rev 106413)
@@ -27,6 +27,8 @@
 from Products.CMFCore.interfaces import IWorkflowDefinition
 from Products.CMFCore.permissions import ModifyPortalContent
 from Products.CMFCore.utils import getToolByName
+from Products.CMFDefault.MetadataTool import MetadataSchema
+from Products.CMFDefault.MetadataTool import _DCMI_ELEMENT_SPECS
 
 _KNOWN_IMPORT_STEPS = (
     'actions',
@@ -315,9 +317,11 @@
     logger = logging.getLogger('GenericSetup.upgrade')
     metadata_tool = getToolByName(tool, 'portal_metadata')
     if getattr(aq_base(metadata_tool), 'DCMI', None) is None:
-        dcmi = metadata_tool._DCMI
-        del metadata_tool._DCMI
-        metadata_tool.DCMI = dcmi
+        if getattr(aq_base(metadata_tool), '_DCMI', None) is None:
+            metadata_tool.DCMI = MetadataSchema('DCMI', _DCMI_ELEMENT_SPECS)
+        else:
+            metadata_tool.DCMI = metadata_tool._DCMI
+            del metadata_tool._DCMI
     logger.info('Dublin Core metadata definition updated.')
 
 
@@ -362,8 +366,11 @@
     discussion_overrides = [x for x in wf_tool.listChainOverrides()
                                                if x[0] == 'Discussion Item']
 
+    if not discussion_overrides: 
+        return True
+
     # Only apply if Discussion Item has an empty workflow chain
-    if discussion_overrides and not discussion_overrides[0][1]:
+    if not discussion_overrides[0][1]:
         return True
 
     return False



More information about the checkins mailing list