Skip to content

Commit 595fdf3

Browse files
committed
Implement delete collection
Added raising exception from post to element, put to collection, and patch to collection committer: Ralf Schlatterbeck <[email protected]>
1 parent 4fcc591 commit 595fdf3

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

roundup/rest.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,33 +83,48 @@ def post_collection(self, class_name, input):
8383
return result
8484

8585
def post_element(self, class_name, item_id, input):
86-
raise NotImplementedError
86+
raise Reject('Invalid request')
8787

8888
def put_collection(self, class_name, input):
89-
raise NotImplementedError
89+
raise Reject('Invalid request')
9090

9191
def put_element(self, class_name, item_id, input):
9292
raise NotImplementedError
9393

9494
def delete_collection(self, class_name, input):
95-
# TODO: should I allow user to delete the whole collection ?
96-
raise NotImplementedError
95+
if not self.db.security.hasPermission('Delete', self.db.getuid(),
96+
class_name):
97+
raise Unauthorised('Permission to delete %s denied' % class_name)
98+
99+
class_obj = self.db.getclass(class_name)
100+
for item_id in class_obj.list():
101+
if not self.db.security.hasPermission('Delete', self.db.getuid(),
102+
class_name, itemid=item_id):
103+
raise Unauthorised('Permission to delete %s %s denied' %
104+
(class_name, item_id))
105+
106+
for item_id in class_obj.list():
107+
self.db.destroynode(class_name, item_id)
108+
109+
self.db.commit()
110+
result = {"status": "ok"}
111+
112+
return result
97113

98114
def delete_element(self, class_name, item_id, input):
99115
if not self.db.security.hasPermission('Delete', self.db.getuid(),
100116
class_name, itemid=item_id):
101117
raise Unauthorised('Permission to delete %s %s denied' %
102118
(class_name, item_id))
103-
if item_id != input['id'].value:
104-
raise UsageError('Must provide id key as confirmation')
119+
105120
self.db.destroynode(class_name, item_id)
106121
self.db.commit()
107122
result = {"status": "ok"}
108123

109124
return result
110125

111126
def patch_collection(self, class_name, input):
112-
raise NotImplementedError
127+
raise Reject('Invalid request')
113128

114129
def patch_element(self, class_name, item_id, input):
115130
raise NotImplementedError

0 commit comments

Comments
 (0)