Mercurial > p > roundup > code
diff roundup/rest.py @ 5576:77d11a24f718 REST-rebased
Exceptions
Handle a case where KeyError exception raise uncaught,
Changed some UsageError exception to ValueError exception to handle 409
Conflicted error.
committer: Ralf Schlatterbeck <rsc@runtux.com>
| author | Chau Nguyen <dangchau1991@yahoo.com> |
|---|---|
| date | Wed, 30 Jan 2019 10:26:34 +0100 |
| parents | 7a7927643357 |
| children | 11e75fbb9edc |
line wrap: on
line diff
--- a/roundup/rest.py Wed Jan 30 10:26:34 2019 +0100 +++ b/roundup/rest.py Wed Jan 30 10:26:34 2019 +0100 @@ -125,7 +125,7 @@ # check for the key property key = class_obj.getkey() if key and key not in props: - raise UsageError('Must provide the "%s" property.' % key) + raise UsageError("Must provide the '%s' property." % key) for key in props: if not self.db.security.hasPermission('Create', self.db.getuid(), @@ -138,7 +138,9 @@ item_id = class_obj.create(**props) self.db.commit() except (TypeError, IndexError, ValueError), message: - raise UsageError(message) + raise ValueError(message) + except KeyError, msg: + raise UsageError("Must provide the %s property." % msg) # set the header Location link = self.base_path + class_name + item_id @@ -152,10 +154,10 @@ return 201, result def post_element(self, class_name, item_id, input): - raise Reject('Invalid request') + raise Reject('POST to an item is not allowed') def put_collection(self, class_name, input): - raise Reject('Invalid request') + raise Reject('PUT a class is not allowed') def put_element(self, class_name, item_id, input): class_obj = self.db.getclass(class_name) @@ -170,7 +172,7 @@ result = class_obj.set(item_id, **props) self.db.commit() except (TypeError, IndexError, ValueError), message: - raise UsageError(message) + raise ValueError(message) result = { 'id': item_id, @@ -219,7 +221,7 @@ return 200, result def patch_collection(self, class_name, input): - raise Reject('Invalid request') + raise Reject('PATCH a class is not allowed') def patch_element(self, class_name, item_id, input): raise NotImplementedError @@ -288,8 +290,11 @@ output = error_obj(400, msg) self.client.response_code = 400 except (AttributeError, Reject), msg: - output = error_obj(405, 'Method Not Allowed. ' + str(msg)) + output = error_obj(405, msg) self.client.response_code = 405 + except ValueError, msg: + output = error_obj(409, msg) + self.client.response_code = 409 except NotImplementedError: output = error_obj(402, 'Method is under development') self.client.response_code = 402
