]> git.llucax.com Git - software/pymin.git/blobdiff - pymin/services/util.py
Bugfix: use hasattr() right when looking for help.
[software/pymin.git] / pymin / services / util.py
index c0371a1a5679f48345e4f222763fe42a37b00e7b..bfdba1c6ba8540b0f10a5b7b97a280d5bfc17bb6 100644 (file)
@@ -9,7 +9,8 @@ try:
 except ImportError:
     import pickle
 
 except ImportError:
     import pickle
 
-from pymin.dispatcher import Handler, handler, HandlerError
+from pymin.dispatcher import Handler, handler, HandlerError, \
+                                CommandNotFoundError
 
 #DEBUG = False
 DEBUG = True
 
 #DEBUG = False
 DEBUG = True
@@ -595,13 +596,11 @@ class DictSubHandler(SubHandler):
     list and show.
     """
 
     list and show.
     """
 
-    def __init__(self, parent, attr=None, key=None, cls=None):
+    def __init__(self, parent, attr=None, cls=None):
         r"Initialize the object, see the class documentation for details."
         self.parent = parent
         if attr is not None:
             self._dict_subhandler_attr = attr
         r"Initialize the object, see the class documentation for details."
         self.parent = parent
         if attr is not None:
             self._dict_subhandler_attr = attr
-        if key is not None:
-            self._dict_subhandler_key = key
         if cls is not None:
             self._dict_subhandler_class = cls
 
         if cls is not None:
             self._dict_subhandler_class = cls
 
@@ -619,6 +618,10 @@ class DictSubHandler(SubHandler):
     @handler(u'Update an item')
     def update(self, key, *args, **kwargs):
         r"update(key, ...) -> None :: Update an item of the dict."
     @handler(u'Update an item')
     def update(self, key, *args, **kwargs):
         r"update(key, ...) -> None :: Update an item of the dict."
+        # TODO make it right with metaclasses, so the method is not created
+        # unless the update() method really exists.
+        if not hasattr(self._dict_subhandler_class, 'update'):
+            raise CommandNotFoundError(('update',))
         if not key in self._dict():
             raise ItemNotFoundError(key)
         self._dict()[key].update(*args, **kwargs)
         if not key in self._dict():
             raise ItemNotFoundError(key)
         self._dict()[key].update(*args, **kwargs)