diff options
author | Milo Casagrande <milo.casagrande@linaro.org> | 2014-11-18 17:22:47 +0100 |
---|---|---|
committer | Milo Casagrande <milo.casagrande@linaro.org> | 2014-11-18 17:22:47 +0100 |
commit | 8bf261419bafd1ea26073e2c52320e4a11455ea9 (patch) | |
tree | eb0888732c4162bf41958af572b7ab27af77f19c /app/handlers/boot.py | |
parent | e953be3567146c12286b8df751290dd573caaad3 (diff) |
boot: Fix boot handler for new mongodb object ID.
Change-Id: I49822be826a3d59ab2d69560c95c4d66308ada6a
Diffstat (limited to 'app/handlers/boot.py')
-rw-r--r-- | app/handlers/boot.py | 53 |
1 files changed, 32 insertions, 21 deletions
diff --git a/app/handlers/boot.py b/app/handlers/boot.py index 99804fc..ff9129d 100644 --- a/app/handlers/boot.py +++ b/app/handlers/boot.py @@ -15,15 +15,17 @@ """The RequestHandler for /boot URLs.""" -import handlers.base as handb -import handlers.common as handc -import handlers.response as handr +import bson + +import handlers.base as hbase +import handlers.common as hcommon +import handlers.response as hresponse import models import taskqueue.tasks as taskq -import utils.db as db +import utils.db -class BootHandler(handb.BaseHandler): +class BootHandler(hbase.BaseHandler): """Handle the /boot URLs.""" def __init__(self, application, request, **kwargs): @@ -35,10 +37,10 @@ class BootHandler(handb.BaseHandler): @staticmethod def _valid_keys(method): - return handc.BOOT_VALID_KEYS.get(method, None) + return hcommon.BOOT_VALID_KEYS.get(method, None) def _post(self, *args, **kwargs): - response = handr.HandlerResponse(202) + response = hresponse.HandlerResponse(202) if kwargs.get("reason", None): response.reason = ( "Request accepted and being imported. WARNING: %s" % @@ -59,16 +61,25 @@ class BootHandler(handb.BaseHandler): if self.validate_req_token("DELETE"): if kwargs and kwargs.get('id', None): - doc_id = kwargs['id'] - if db.find_one(self.collection, doc_id): - response = self._delete(doc_id) - if response.status_code == 200: - response.reason = "Resource '%s' deleted" % doc_id - else: - response = handr.HandlerResponse(404) - response.reason = "Resource '%s' not found" % doc_id + try: + doc_id = kwargs['id'] + obj_id = bson.objectid.ObjectId(doc_id) + if utils.db.find_one(self.collection, [obj_id]): + response = self._delete(obj_id) + if response.status_code == 200: + response.reason = "Resource '%s' deleted" % doc_id + else: + response = hresponse.HandlerResponse(404) + response.reason = "Resource '%s' not found" % doc_id + except bson.errors.InvalidId, ex: + self.log.exception(ex) + self.log.error( + "Wrong ID '%s' value passed as object ID", doc_id + ) + response = hresponse.HandlerResponse(400) + response.reason = "Wrong ID value passed as object ID" else: - spec = handc.get_query_spec( + spec = hcommon.get_query_spec( self.get_query_arguments, self._valid_keys("DELETE") ) if spec: @@ -78,22 +89,22 @@ class BootHandler(handb.BaseHandler): "Resources identified with '%s' deleted" % spec ) else: - response = handr.HandlerResponse(400) + response = hresponse.HandlerResponse(400) response.result = None response.reason = ( "No valid data provided to execute a DELETE" ) else: - response = handr.HandlerResponse(403) - response.reason = handc.NOT_VALID_TOKEN + response = hresponse.HandlerResponse(403) + response.reason = hcommon.NOT_VALID_TOKEN return response def _delete(self, spec_or_id): - response = handr.HandlerResponse(200) + response = hresponse.HandlerResponse(200) response.result = None - response.status_code = db.delete(self.collection, spec_or_id) + response.status_code = utils.db.delete(self.collection, spec_or_id) response.reason = self._get_status_message(response.status_code) return response |