Mercurial > p > roundup > code
diff roundup/rest.py @ 5564:da6b5724314f REST-rebased
Added Partial PUT
committer: Ralf Schlatterbeck <rsc@runtux.com>
| author | Chau Nguyen <dangchau1991@yahoo.com> |
|---|---|
| date | Wed, 30 Jan 2019 10:26:34 +0100 |
| parents | 9a1614ff752d |
| children | b3d5085dd04e |
line wrap: on
line diff
--- a/roundup/rest.py Wed Jan 30 10:26:33 2019 +0100 +++ b/roundup/rest.py Wed Jan 30 10:26:34 2019 +0100 @@ -89,7 +89,23 @@ raise Reject('Invalid request') def put_element(self, class_name, item_id, input): - raise NotImplementedError + class_obj = self.db.getclass(class_name) + + input_data = ["%s=%s" % (item.name, item.value) for item in input.value] + props = xmlrpc.props_from_args(self.db, class_obj, input_data, item_id) + for p in props.iterkeys(): + if not self.db.security.hasPermission('Edit', self.db.getuid(), + class_name, p, item_id): + raise Unauthorised('Permission to edit %s of %s%s denied' % + (p, class_name, item_id)) + try: + result = class_obj.set(item_id, **props) + self.db.commit() + except (TypeError, IndexError, ValueError), message: + raise UsageError(message) + + result['id'] = item_id + return result def delete_collection(self, class_name, input): if not self.db.security.hasPermission('Delete', self.db.getuid(),
