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(),

Roundup Issue Tracker: http://roundup-tracker.org/