Log message for revision 41142:
  In extension profiles, sequence properties are now extended instead of
  replaced, except if the 'remove' attribute is present.
  
  This can be used for instance by extension profiles to add values to the
  'allowed_content_types' property of a TypeInformation object.
  

Changed:
  U   CMF/trunk/GenericSetup/CHANGES.txt
  U   CMF/trunk/GenericSetup/testing.py
  U   CMF/trunk/GenericSetup/tests/test_utils.py
  U   CMF/trunk/GenericSetup/utils.py

-=-
Modified: CMF/trunk/GenericSetup/CHANGES.txt
===================================================================
--- CMF/trunk/GenericSetup/CHANGES.txt  2006-01-04 23:23:41 UTC (rev 41141)
+++ CMF/trunk/GenericSetup/CHANGES.txt  2006-01-04 23:40:45 UTC (rev 41142)
@@ -11,6 +11,9 @@
     - Forward ported changes from GenericSetup 0.11 and 0.12 (which were
       created in a separate repository).
 
+    - In extension profiles, sequence properties are now extended
+      instead of replaced, except if the 'remove' attribute is present.
+
     - Don't export or purge read-only properties. Correctly purge
       non-deletable int/float properties.
 

Modified: CMF/trunk/GenericSetup/testing.py
===================================================================
--- CMF/trunk/GenericSetup/testing.py   2006-01-04 23:23:41 UTC (rev 41141)
+++ CMF/trunk/GenericSetup/testing.py   2006-01-04 23:40:45 UTC (rev 41142)
@@ -58,12 +58,13 @@
 
     def __init__(self):
         self._notes = []
+        self._should_purge = True
 
     def getLogger(self, name):
         return DummyLogger(name, self._notes)
 
     def shouldPurge(self):
-        return True
+        return self._should_purge
 
 
 class _AdapterTestCaseBase(PlacelessSetup, unittest.TestCase):

Modified: CMF/trunk/GenericSetup/tests/test_utils.py
===================================================================
--- CMF/trunk/GenericSetup/tests/test_utils.py  2006-01-04 23:23:41 UTC (rev 
41141)
+++ CMF/trunk/GenericSetup/tests/test_utils.py  2006-01-04 23:40:45 UTC (rev 
41142)
@@ -119,7 +119,21 @@
 </dummy>
 """
 
+_NOPURGE_IMPORT = """\
+<?xml version="1.0"?>
+<dummy>
+ <property name="lines1">
+  <element value="Foo"/>
+  <element value="Bar"/>
+ </property>
+ <property name="lines2" remove="True">
+  <element value="Foo"/>
+  <element value="Bar"/>
+ </property>
+</dummy>
+"""
 
+
 def _testFunc( *args, **kw ):
 
     """ This is a test.
@@ -321,7 +335,19 @@
 
         self.assertEqual(doc.toprettyxml(' '), _EMPTY_PROPERTY_EXPORT)
 
+    def test__initProperties_nopurge(self):
+        node = parseString(_NOPURGE_IMPORT).documentElement
+        self.helpers.environ._should_purge = False
+        obj = self.helpers.context
+        obj._properties = ()
+        obj.manage_addProperty('lines1', ('A', 'B'), 'lines')
+        obj.manage_addProperty('lines2', ('A', 'B'), 'lines')
+        self.helpers._initProperties(node)
 
+        self.assertEquals(obj.lines1, ('A', 'B', 'Foo', 'Bar'))
+        self.assertEquals(obj.lines2, ('Foo', 'Bar'))
+
+
 class PrettyDocumentTests(unittest.TestCase):
 
     def test_attr_quoting(self):

Modified: CMF/trunk/GenericSetup/utils.py
===================================================================
--- CMF/trunk/GenericSetup/utils.py     2006-01-04 23:23:41 UTC (rev 41141)
+++ CMF/trunk/GenericSetup/utils.py     2006-01-04 23:40:45 UTC (rev 41142)
@@ -686,6 +686,13 @@
                 # are converted to the right type
                 prop_value = self._getNodeText(child).encode('utf-8')
 
+            if (not self.environ.shouldPurge()
+                and not child.hasAttribute('remove')):
+                # If not purge mode and no remove attribute, append to sequence
+                prop = obj.getProperty(prop_id)
+                if isinstance(prop, (tuple, list)):
+                    prop_value = tuple(prop) + tuple(prop_value)
+
             obj._updateProperty(prop_id, prop_value)
 
 

_______________________________________________
CMF-checkins mailing list
[email protected]
http://mail.zope.org/mailman/listinfo/cmf-checkins

Reply via email to