changeset 229:d4216a848547

fixed problem that reading the project tree changes it.
author casties
date Tue, 05 Nov 2013 15:38:25 +0100
parents afc96bc56817
children feb2cb6241be
files HashTree.py MPIWGProjects.py
diffstat 2 files changed, 15 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/HashTree.py	Tue Nov 05 13:58:45 2013 +0100
+++ b/HashTree.py	Tue Nov 05 15:38:25 2013 +0100
@@ -13,20 +13,32 @@
         self.value = value
         self.children = children
 
-    def setValue(self, val, append=True):
+
+    def setValue(self, val, append=True, unique=False):
         """set or append to the value"""
         if (self.value is not None) or append:
             if isinstance(self.value, list):
                 # old value is list
+                if unique and val in self.value:
+                    logging.debug("setValue: list HAS SAME: %s"%repr(val))
+                    return
+
                 self.value.append(val)
+                
             elif self.value is not None:
                 # old value is scalar
+                if unique and val == self.value:
+                    logging.debug("setValue: scalar IS SAME: %s"%repr(val))
+                    return
+                
                 self.value = [self.value, val]
+                
             else:
                 # old value is None
                 self.value = val
                 
         else:
+            # old value is None
             self.value = val
 
 
@@ -36,7 +48,7 @@
             if onlyFirst and not asList:
                 return self.value[0]
             else:
-                return self.value
+                return self.value[:]
         else:
             if asList:
                 if self.value is None:
--- a/MPIWGProjects.py	Tue Nov 05 13:58:45 2013 +0100
+++ b/MPIWGProjects.py	Tue Nov 05 15:38:25 2013 +0100
@@ -1876,7 +1876,7 @@
         """Return the project hierarchy tree (and cache it).
         
         Returns HashTree instance."""
-        tree = self._v_projectTree 
+        tree = self._v_projectTree
         if tree is None:
             tree = HashTree(keySeparator='.', keyFn=getInt)
             for p in self.objectValues(spec='MPIWGProject'):