]> git.llucax.com Git - software/pymin.git/blobdiff - pymin/services/util.py
Use a plug-in architecture for services (refs #27).
[software/pymin.git] / pymin / services / util.py
index acb953988d21493e865f045a503b658e66b9583c..00f238535416dbb8b14947fc5fae2d26c26c45d4 100644 (file)
@@ -101,7 +101,7 @@ class ItemAlreadyExistsError(ItemError):
 
     def __init__(self, key):
         r"Initialize the object. See class documentation for more info."
 
     def __init__(self, key):
         r"Initialize the object. See class documentation for more info."
-        self.message = u'Item already exists: "%s"' % key
+        self.message = u'Item already exists: %s' % key
 
 class ItemNotFoundError(ItemError):
     r"""
 
 class ItemNotFoundError(ItemError):
     r"""
@@ -362,7 +362,7 @@ class Restorable(Persistent):
             return False
 
 class ConfigWriter:
             return False
 
 class ConfigWriter:
-    r"""ConfigWriter([initd_name[, initd_dir]]) -> ConfigWriter.
+    r"""ConfigWriter([files[, cfg_dir[, tpl_dir]]]) -> ConfigWriter.
 
     This is a helper class to inherit from to automatically handle
     configuration generation. Mako template system is used for configuration
 
     This is a helper class to inherit from to automatically handle
     configuration generation. Mako template system is used for configuration
@@ -850,7 +850,9 @@ class ContainerSubHandler(SubHandler):
         # do we have the same item? then raise an error
         if key in self._vattr():
             log.debug(u'ContainerSubHandler.add: allready exists')
         # do we have the same item? then raise an error
         if key in self._vattr():
             log.debug(u'ContainerSubHandler.add: allready exists')
-            raise ItemAlreadyExistsError(item)
+            if not isinstance(self._attr(), dict):
+                key = self._attr().index(item)
+            raise ItemAlreadyExistsError(key)
         # do we have the same item, but logically deleted? then update flags
         if key in self._attr():
             log.debug(u'ContainerSubHandler.add: was deleted, undeleting it')
         # do we have the same item, but logically deleted? then update flags
         if key in self._attr():
             log.debug(u'ContainerSubHandler.add: was deleted, undeleting it')
@@ -916,7 +918,7 @@ class ContainerSubHandler(SubHandler):
         log.debug(u'ContainerSubHandler.clear()')
         # FIXME broken really, no _delete attribute is setted :S
         if isinstance(self._attr(), dict):
         log.debug(u'ContainerSubHandler.clear()')
         # FIXME broken really, no _delete attribute is setted :S
         if isinstance(self._attr(), dict):
-            self._attr.clear()
+            self._attr().clear()
         else:
             self._attr(list())
 
         else:
             self._attr(list())
 
@@ -1049,7 +1051,9 @@ class ComposedSubHandler(SubHandler):
         # do we have the same item? then raise an error
         if key in self._vattr(cont):
             log.debug(u'ComposedSubHandler.add: allready exists')
         # do we have the same item? then raise an error
         if key in self._vattr(cont):
             log.debug(u'ComposedSubHandler.add: allready exists')
-            raise ItemAlreadyExistsError(item)
+            if not isinstance(self._attr(), dict):
+                key = self._attr().index(item)
+            raise ItemAlreadyExistsError(key)
         # do we have the same item, but logically deleted? then update flags
         if key in self._attr(cont):
             log.debug(u'ComposedSubHandler.add: was deleted, undeleting it')
         # do we have the same item, but logically deleted? then update flags
         if key in self._attr(cont):
             log.debug(u'ComposedSubHandler.add: was deleted, undeleting it')