]> git.llucax.com Git - software/pymin.git/blobdiff - pymin/services/util.py
Bugfix: catch LookupErrors instead of IndexError in ContainerSubHandler.
[software/pymin.git] / pymin / services / util.py
index b665c00e173dd4624e221018a579702628a7fc50..9c96fcab36d6b56f645ccd6ffe5d565f1f72c67e 100644 (file)
@@ -703,7 +703,7 @@ class ContainerSubHandler(SubHandler):
             item.update(*args, **kwargs)
             if hasattr(item, '_update'):
                 item._update = True
             item.update(*args, **kwargs)
             if hasattr(item, '_update'):
                 item._update = True
-        except IndexError:
+        except LookupError:
             raise ItemNotFoundError(index)
 
     @handler(u'Delete an item')
             raise ItemNotFoundError(index)
 
     @handler(u'Delete an item')
@@ -718,9 +718,17 @@ class ContainerSubHandler(SubHandler):
             else:
                 del self._attr()[index]
             return item
             else:
                 del self._attr()[index]
             return item
-        except IndexError:
+        except LookupError:
             raise ItemNotFoundError(index)
 
             raise ItemNotFoundError(index)
 
+    @handler(u'Remove all items (use with care).')
+    def clear(self):
+        r"clear() -> None :: Delete all items of the container."
+        if isinstance(self._attr(), dict):
+            self._attr.clear()
+        else:
+            self._attr(list())
+
     @handler(u'Get information about an item')
     def get(self, index):
         r"get(index) -> item :: List all the information of an item."
     @handler(u'Get information about an item')
     def get(self, index):
         r"get(index) -> item :: List all the information of an item."
@@ -728,7 +736,7 @@ class ContainerSubHandler(SubHandler):
             index = int(index) # TODO validation
         try:
             return self._vattr()[index]
             index = int(index) # TODO validation
         try:
             return self._vattr()[index]
-        except IndexError:
+        except LookupError:
             raise ItemNotFoundError(index)
 
     @handler(u'Get information about all items')
             raise ItemNotFoundError(index)
 
     @handler(u'Get information about all items')