aboutsummaryrefslogtreecommitdiff
path: root/app/handlers/defconf.py
diff options
context:
space:
mode:
authorMilo Casagrande <milo.casagrande@linaro.org>2014-04-04 17:59:59 +0200
committerMilo Casagrande <milo.casagrande@linaro.org>2014-04-04 18:01:03 +0200
commit5ae2598cc8ccdef87393e7207f053f24a350d432 (patch)
tree1365486593a482eddfcacd7d085217338e716283 /app/handlers/defconf.py
parenta2e88dcb96dd82ef6d7b4e253b5662b3b645b8c7 (diff)
Add DELETE support for defconfig handler.
Diffstat (limited to 'app/handlers/defconf.py')
-rw-r--r--app/handlers/defconf.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/app/handlers/defconf.py b/app/handlers/defconf.py
index 731bcec..7bafec0 100644
--- a/app/handlers/defconf.py
+++ b/app/handlers/defconf.py
@@ -15,8 +15,14 @@
"""The RequestHandler for /defconfig URLs."""
+import json
+import tornado
+
+from functools import partial
+
from handlers.base import BaseHandler
from models.defconfig import DEFCONFIG_COLLECTION
+from utils.db import delete
class DefConfHandler(BaseHandler):
@@ -28,3 +34,25 @@ class DefConfHandler(BaseHandler):
@property
def collection(self):
return self.db[DEFCONFIG_COLLECTION]
+
+ def _valid_keys(self, method):
+ valid_keys = {
+ 'DELETE': ['defonf']
+ }
+
+ return valid_keys.get(method, None)
+
+ def delete(self, *args, **kwargs):
+ self._check_content_type()
+
+ json_obj = json.loads(self.request.body.decode('utf8'))
+ if self._has_valid_keys(json_obj, self._valid_keys('DELETE')):
+ self.executor.submit(
+ partial(delete, json_obj['defconf'])
+ ).add_done_callback(
+ lambda future: tornado.ioloop.IOLoop.instance().add_callback(
+ partial(self._create_valid_response, future.result())
+ )
+ )
+ else:
+ self.send_error(status_code=400)