aboutsummaryrefslogtreecommitdiff
path: root/app/handlers/token.py
diff options
context:
space:
mode:
authorMilo Casagrande <milo.casagrande@linaro.org>2014-11-18 17:24:24 +0100
committerMilo Casagrande <milo.casagrande@linaro.org>2014-11-18 17:24:24 +0100
commit40d0b060ef9dcd8c13bcf2c50656b4e64002fd73 (patch)
tree9fc4ea6719407288ae5f0e738f32c19cfda326b6 /app/handlers/token.py
parent7518c66edea01daa5dc955d510e349509e3f7c33 (diff)
token: Fix token handler for new mongodb object ID.
Change-Id: I4c6d7fab082485e0b31a9e58067df214812ba17d
Diffstat (limited to 'app/handlers/token.py')
-rw-r--r--app/handlers/token.py57
1 files changed, 36 insertions, 21 deletions
diff --git a/app/handlers/token.py b/app/handlers/token.py
index b922cb5..feb2413 100644
--- a/app/handlers/token.py
+++ b/app/handlers/token.py
@@ -15,6 +15,8 @@
"""The RequestHandler for /token URLs."""
+import bson
+
from urlparse import urlunparse
from handlers.base import BaseHandler
@@ -172,31 +174,38 @@ class TokenHandler(BaseHandler):
response = HandlerResponse()
response.result = None
- result = find_one(self.collection, doc_id, field=TOKEN_KEY)
+ try:
+ obj_id = bson.objectid.ObjectId(doc_id)
+ result = find_one(self.collection, [obj_id])
- if result:
- token = Token.from_json(result)
+ if result:
+ token = Token.from_json(result)
- try:
token = self._token_update_create(json_obj, token, fail=False)
response.status_code = update(
- self.collection, {'token': doc_id}, token.to_dict()
+ self.collection, {'_id': obj_id}, token.to_dict()
)
if response.status_code == 200:
response.result = {TOKEN_KEY: token.token}
- except KeyError:
- response.status_code = 400
- response.reason = (
- "Mandatory field missing"
- )
- except (TypeError, ValueError):
- response.status_code = 400
- response.reason = "Wrong field value or type in the JSON data"
- except Exception, ex:
- response.status_code = 400
- response.reason = str(ex)
- else:
- response.status_code = 404
+ else:
+ response.status_code = 404
+ except bson.errors.InvalidId, ex:
+ self.log.exception(ex)
+ self.log.error("Wrong ID '%s' value passed for object ID", doc_id)
+ response.status_code = 400
+ response.reason = "Wrong ID value provided"
+ except KeyError, ex:
+ self.log.exception(ex)
+ response.status_code = 400
+ response.reason = "Mandatory field missing"
+ except (TypeError, ValueError), ex:
+ self.log.exception(ex)
+ response.status_code = 400
+ response.reason = "Wrong field value or type in the JSON data"
+ except Exception, ex:
+ self.log.exception(ex)
+ response.status_code = 400
+ response.reason = str(ex)
return response
@@ -283,8 +292,14 @@ class TokenHandler(BaseHandler):
def _delete(self, doc_id):
ret_val = 404
- self.log.info("Tolen deletion by IP %s", self.request.remote_ip)
- if find_one(self.collection, doc_id, field=TOKEN_KEY):
- ret_val = delete(self.collection, {TOKEN_KEY: {'$in': [doc_id]}})
+ self.log.info("Token deletion from IP %s", self.request.remote_ip)
+ try:
+ doc_obj = bson.objectid.ObjectId(doc_id)
+ if find_one(self.collection, [doc_obj]):
+ ret_val = delete(self.collection, {"_id": {"$in": [doc_obj]}})
+ except bson.errors.InvalidId, ex:
+ self.log.exception(ex)
+ self.log.error("Wrong ID '%s' value passed as object ID", doc_id)
+ ret_val = 400
return ret_val