diff options
author | Milo Casagrande <milo.casagrande@linaro.org> | 2014-04-04 17:59:59 +0200 |
---|---|---|
committer | Milo Casagrande <milo.casagrande@linaro.org> | 2014-04-04 18:01:03 +0200 |
commit | 5ae2598cc8ccdef87393e7207f053f24a350d432 (patch) | |
tree | 1365486593a482eddfcacd7d085217338e716283 /app/handlers/defconf.py | |
parent | a2e88dcb96dd82ef6d7b4e253b5662b3b645b8c7 (diff) |
Add DELETE support for defconfig handler.
Diffstat (limited to 'app/handlers/defconf.py')
-rw-r--r-- | app/handlers/defconf.py | 28 |
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) |