Skip to content

Commit f563df9

Browse files
committed
Added Partial PUT
committer: Ralf Schlatterbeck <[email protected]>
1 parent 595fdf3 commit f563df9

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

roundup/rest.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,23 @@ def put_collection(self, class_name, input):
8989
raise Reject('Invalid request')
9090

9191
def put_element(self, class_name, item_id, input):
92-
raise NotImplementedError
92+
class_obj = self.db.getclass(class_name)
93+
94+
input_data = ["%s=%s" % (item.name, item.value) for item in input.value]
95+
props = xmlrpc.props_from_args(self.db, class_obj, input_data, item_id)
96+
for p in props.iterkeys():
97+
if not self.db.security.hasPermission('Edit', self.db.getuid(),
98+
class_name, p, item_id):
99+
raise Unauthorised('Permission to edit %s of %s%s denied' %
100+
(p, class_name, item_id))
101+
try:
102+
result = class_obj.set(item_id, **props)
103+
self.db.commit()
104+
except (TypeError, IndexError, ValueError), message:
105+
raise UsageError(message)
106+
107+
result['id'] = item_id
108+
return result
93109

94110
def delete_collection(self, class_name, input):
95111
if not self.db.security.hasPermission('Delete', self.db.getuid(),

0 commit comments

Comments
 (0)