[CMF-checkins] SVN: CMF/trunk/GenericSetup/ Correctly purge non-deletable int/float propertie.

Florent Guillaume fg at nuxeo.com
Mon Jan 2 10:44:10 EST 2006


Log message for revision 41080:
  Correctly purge non-deletable int/float propertie.
  

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-02 11:35:03 UTC (rev 41079)
+++ CMF/trunk/GenericSetup/CHANGES.txt	2006-01-02 15:44:09 UTC (rev 41080)
@@ -11,7 +11,8 @@
     - Forward ported changes from GenericSetup 0.11 and 0.12 (which were
       created in a separate repository).
 
-    - Don't export or purge read-only properties.
+    - Don't export or purge read-only properties. Correctly purge
+      non-deletable int/float properties.
 
     - Correctly quote XML on export.
 

Modified: CMF/trunk/GenericSetup/tests/test_utils.py
===================================================================
--- CMF/trunk/GenericSetup/tests/test_utils.py	2006-01-02 11:35:03 UTC (rev 41079)
+++ CMF/trunk/GenericSetup/tests/test_utils.py	2006-01-02 15:44:09 UTC (rev 41080)
@@ -41,6 +41,9 @@
  <property name="foo_mselection" select_variable="foobarbaz"
     type="multiple selection"/>
  <property name="foo_boolean0" type="boolean">False</property>
+ <property name="foo_int_nodel">0</property>
+ <property name="foo_float_nodel">0.0</property>
+ <property name="foo_boolean_nodel">False</property>
 </dummy>
 """
 
@@ -71,6 +74,9 @@
   <element value="Baz"/>
  </property>
  <property name="foo_boolean0" type="boolean">False</property>
+ <property name="foo_int_nodel">1789</property>
+ <property name="foo_float_nodel">3.1415</property>
+ <property name="foo_boolean_nodel">True</property>
 </dummy>
 """
 
@@ -99,6 +105,9 @@
   <element value="Baz"/>
  </property>
  <property name="foo_boolean0">False</property>
+ <property name="foo_int_nodel">1789</property>
+ <property name="foo_float_nodel">3.1415</property>
+ <property name="foo_boolean_nodel">True</property>
 </dummy>
 """
 
@@ -198,6 +207,8 @@
         obj = PropertyManager('obj')
         obj.foobarbaz = ('Foo', 'Bar', 'Baz')
         obj._properties = ()
+        # XXX Some intializations are dubious, _setProperty doesn't do any
+        # XXX type conversion and will store empty strings as defaults.
         obj._setProperty('foo_boolean', '', 'boolean')
         obj._setProperty('foo_date', '', 'date')
         obj._setProperty('foo_float', '', 'float')
@@ -212,6 +223,12 @@
         obj._setProperty('foo_boolean0', '', 'boolean')
         obj._setProperty('foo_ro', '', 'string')
         obj._properties[-1]['mode'] = '' # Read-only, not exported or purged
+        obj._setProperty('foo_int_nodel', 0, 'int')
+        obj._properties[-1]['mode'] = 'w' # Not deletable
+        obj._setProperty('foo_float_nodel', 0.0, 'float')
+        obj._properties[-1]['mode'] = 'w' # Not deletable
+        obj._setProperty('foo_boolean_nodel', False, 'boolean')
+        obj._properties[-1]['mode'] = 'w' # Not deletable
         self.helpers = self._makeOne(obj, DummySetupEnviron())
 
     def _populate(self, obj):
@@ -228,6 +245,9 @@
         obj._updateProperty( 'foo_mselection', ('Foo', 'Baz') )
         obj.foo_boolean0 = 0
         obj._updateProperty('foo_ro', 'RO')
+        obj._updateProperty('foo_int_nodel', '1789')
+        obj._updateProperty('foo_float_nodel', '3.1415')
+        obj._updateProperty('foo_boolean_nodel', 'True')
 
     def test__extractProperties_empty(self):
         doc = self.helpers._doc = PrettyDocument()

Modified: CMF/trunk/GenericSetup/utils.py
===================================================================
--- CMF/trunk/GenericSetup/utils.py	2006-01-02 11:35:03 UTC (rev 41079)
+++ CMF/trunk/GenericSetup/utils.py	2006-01-02 15:44:09 UTC (rev 41080)
@@ -643,8 +643,11 @@
             if 'd' in mode and not prop_id == 'title':
                 self.context._delProperty(prop_id)
             else:
-                if prop_map.get('type') == 'multiple selection':
+                prop_type = prop_map.get('type')
+                if prop_type == 'multiple selection':
                     prop_value = ()
+                elif prop_type in ('int', 'float'):
+                    prop_value = 0
                 else:
                     prop_value = ''
                 self.context._updateProperty(prop_id, prop_value)



More information about the CMF-checkins mailing list