Log message for revision 41332:
Now only a sequence property with the purge="False" attribute will be
left alone and not purged. The default is True even for extension
profiles.
This is so that extension profile defining new objects can be imported
twice without having their sequence properties be doubled.
Changed:
U CMF/trunk/GenericSetup/CHANGES.txt
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-16 17:57:56 UTC (rev 41331)
+++ CMF/trunk/GenericSetup/CHANGES.txt 2006-01-16 18:05:08 UTC (rev 41332)
@@ -11,8 +11,8 @@
- 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 'purge' attribute is true.
+ - A sequence property with the purge="False" attribute will not be
+ purged. This is useful in extension profiles.
- Don't export or purge read-only properties. Correctly purge
non-deletable int/float properties.
Modified: CMF/trunk/GenericSetup/tests/test_utils.py
===================================================================
--- CMF/trunk/GenericSetup/tests/test_utils.py 2006-01-16 17:57:56 UTC (rev
41331)
+++ CMF/trunk/GenericSetup/tests/test_utils.py 2006-01-16 18:05:08 UTC (rev
41332)
@@ -130,6 +130,10 @@
<element value="Foo"/>
<element value="Bar"/>
</property>
+ <property name="lines3" purge="False">
+ <element value="Foo"/>
+ <element value="Bar"/>
+ </property>
</dummy>
"""
@@ -335,19 +339,35 @@
self.assertEqual(doc.toprettyxml(' '), _EMPTY_PROPERTY_EXPORT)
- def test__initProperties_nopurge(self):
+ def test__initProperties_nopurge_base(self):
node = parseString(_NOPURGE_IMPORT).documentElement
- self.helpers.environ._should_purge = False
+ self.helpers.environ._should_purge = True # base profile
obj = self.helpers.context
obj._properties = ()
obj.manage_addProperty('lines1', ('A', 'B'), 'lines')
obj.manage_addProperty('lines2', ('A', 'B'), 'lines')
+ obj.manage_addProperty('lines3', ('A', 'B'), 'lines')
self.helpers._initProperties(node)
- self.assertEquals(obj.lines1, ('A', 'B', 'Foo', 'Bar'))
+ self.assertEquals(obj.lines1, ('Foo', 'Bar'))
self.assertEquals(obj.lines2, ('Foo', 'Bar'))
+ self.assertEquals(obj.lines3, ('A', 'B', 'Foo', 'Bar'))
+ def test__initProperties_nopurge_extension(self):
+ node = parseString(_NOPURGE_IMPORT).documentElement
+ self.helpers.environ._should_purge = False # extension profile
+ obj = self.helpers.context
+ obj._properties = ()
+ obj.manage_addProperty('lines1', ('A', 'B'), 'lines')
+ obj.manage_addProperty('lines2', ('A', 'B'), 'lines')
+ obj.manage_addProperty('lines3', ('A', 'B'), 'lines')
+ self.helpers._initProperties(node)
+ self.assertEquals(obj.lines1, ('Foo', 'Bar'))
+ self.assertEquals(obj.lines2, ('Foo', 'Bar'))
+ self.assertEquals(obj.lines3, ('A', 'B', 'Foo', 'Bar'))
+
+
class PrettyDocumentTests(unittest.TestCase):
def test_attr_quoting(self):
Modified: CMF/trunk/GenericSetup/utils.py
===================================================================
--- CMF/trunk/GenericSetup/utils.py 2006-01-16 17:57:56 UTC (rev 41331)
+++ CMF/trunk/GenericSetup/utils.py 2006-01-16 18:05:08 UTC (rev 41332)
@@ -686,11 +686,8 @@
# are converted to the right type
prop_value = self._getNodeText(child).encode('utf-8')
- purge = self.environ.shouldPurge()
- if child.hasAttribute('purge'):
- purge = self._convertToBoolean(child.getAttribute('purge'))
- if not purge:
- # If not purge mode, append to sequence
+ if not self._convertToBoolean(child.getAttribute('purge') or
'True'):
+ # If the purge attribute is false, append to sequence
prop = obj.getProperty(prop_id)
if isinstance(prop, (tuple, list)):
prop_value = tuple(prop) + tuple(prop_value)
_______________________________________________
CMF-checkins mailing list
[email protected]
http://mail.zope.org/mailman/listinfo/cmf-checkins