]> git.llucax.com Git - software/pymin.git/commitdiff
Raise a CommandNotFoundError if updating an object without update().
authorLeandro Lucarella <llucarella@integratech.com.ar>
Wed, 10 Oct 2007 19:00:43 +0000 (16:00 -0300)
committerLeandro Lucarella <llucarella@integratech.com.ar>
Wed, 10 Oct 2007 19:00:43 +0000 (16:00 -0300)
When a DictSubHandler try to update an object that doesn't have an
update() method, it raises a CommandNotFoundError to emulate that the
update command doesn't exist.

pymin/services/util.py

index c0371a1a5679f48345e4f222763fe42a37b00e7b..3f509578f03ed3cd466019e9eaf4974097a6ad55 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
@@ -619,6 +620,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)