Browse Source

Allow filtered object retrieval

Matthias Vogelgesang 9 years ago
parent
commit
6524fa1297
2 changed files with 11 additions and 2 deletions
  1. 8 0
      client.py
  2. 3 2
      dm/client.py

+ 8 - 0
client.py

@@ -36,5 +36,13 @@ def main():
             logging.info("Created {}".format(download))
 
 
+def delete_objects():
+    for obj in client.get_objects(predicate=lambda o: o.label == 'foo2'):
+        try:
+            client.delete_object(obj)
+        except dm.exceptions.ArbitraryError as e:
+            logging.error("Could not delete {}".format(obj))
+
+
 if __name__ == '__main__':
     main()

+ 3 - 2
dm/client.py

@@ -56,8 +56,9 @@ class Client(object):
     def get_object_ids(self, limit=None, since=None):
         return self.get_collection('basemetadata/digitalObjects', 'baseId', limit)
 
-    def get_objects(self, limit=-1):
-        return [Object(self, oid) for oid in self.get_object_ids(limit)]
+    def get_objects(self, limit=-1, predicate=lambda o: True):
+        objects = (Object(self, oid) for oid in self.get_object_ids(limit))
+        return [o for o in objects if predicate(o)]
 
     def create_object(self, investigation_id, uploader, label=None, note=None):
         url = self.url('basemetadata/investigations', investigation_id, 'digitalObjects')