[CalendarServer-changes] [1369] CalendarServer/trunk/twistedcaldav

source_changes at macosforge.org source_changes at macosforge.org
Tue Mar 13 17:54:28 PDT 2007


Revision: 1369
          http://trac.macosforge.org/projects/calendarserver/changeset/1369
Author:   wsanchez at apple.com
Date:     2007-03-13 17:54:28 -0700 (Tue, 13 Mar 2007)

Log Message:
-----------
Merge config options instead of replacing them

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/config.py
    CalendarServer/trunk/twistedcaldav/test/test_config.py

Modified: CalendarServer/trunk/twistedcaldav/config.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/config.py	2007-03-14 00:20:04 UTC (rev 1368)
+++ CalendarServer/trunk/twistedcaldav/config.py	2007-03-14 00:54:28 UTC (rev 1369)
@@ -146,7 +146,16 @@
     },
 }
 
+def _mergeData(oldData, newData):
+    for key, value in newData.iteritems():
+        if isinstance(value, (dict,)):
+            assert isinstance(oldData.get(key, {}), (dict,))
+            oldData[key] = _mergeData(oldData.get(key, {}), value)
+        else:
+            oldData[key] = value
 
+    return oldData
+
 class Config (object):
     def __init__(self, defaults):
         self._defaults = defaults
@@ -157,10 +166,10 @@
         return str(self._data)
 
     def update(self, items):
-        self._data.update(items)
+        self._data = _mergeData(self._data, items)
 
     def updateDefaults(self, items):
-        self._defaults.update(items)
+        self._defaults = _mergeData(self._defaults, items)
         self.update(items)
 
     def __getattr__(self, attr):

Modified: CalendarServer/trunk/twistedcaldav/test/test_config.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/test/test_config.py	2007-03-14 00:20:04 UTC (rev 1368)
+++ CalendarServer/trunk/twistedcaldav/test/test_config.py	2007-03-14 00:54:28 UTC (rev 1369)
@@ -98,6 +98,11 @@
 
         self.assertEquals(config.SSLPort, 8443)
 
+    def testMerge(self):
+        config.update({'MultiProcess': {}})
+
+        self.assertEquals(config.MultiProcess["LoadBalancer"]["Enabled"], True)
+
     def testUpdateDefaults(self):
         self.assertEquals(config.SSLPort, -1)
 
@@ -112,3 +117,8 @@
         self.assertEquals(config.SSLPort, 8009)
 
         config.updateDefaults({'SSLPort': -1})
+
+    def testMergeDefaults(self):
+        config.updateDefaults({'MultiProcess': {}})
+
+        self.assertEquals(config._defaults["MultiProcess"]["LoadBalancer"]["Enabled"], True)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070313/9858f39f/attachment.html


More information about the calendarserver-changes mailing list