From 54bc0f28fd9b5ec6675401d6c3322b30e72e7d9c Mon Sep 17 00:00:00 2001 From: grakiss Date: Wed, 18 Oct 2017 22:15:32 -0400 Subject: [web-cvp]share result by email JIRA: DOVETAIL-529 It may be easier to get other people's email than his user id Change-Id: Ia5f9aa72d3c79bd3f5e69dad98b3f188cdaafc3d Signed-off-by: grakiss --- cvp/opnfv_testapi/resources/test_handlers.py | 37 +++++++++++++++++++++------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'cvp/opnfv_testapi/resources/test_handlers.py') diff --git a/cvp/opnfv_testapi/resources/test_handlers.py b/cvp/opnfv_testapi/resources/test_handlers.py index 9ad1bbc2..2cbfbf10 100644 --- a/cvp/opnfv_testapi/resources/test_handlers.py +++ b/cvp/opnfv_testapi/resources/test_handlers.py @@ -33,6 +33,8 @@ class GenericTestHandler(handlers.GenericApiHandler): class TestsCLHandler(GenericTestHandler): @swagger.operation(nickname="queryTests") + @web.asynchronous + @gen.coroutine def get(self): """ @description: Retrieve result(s) for a test project @@ -68,7 +70,8 @@ class TestsCLHandler(GenericTestHandler): 'per_page': CONF.api_results_per_page } - self._list(query=self.set_query(), **limitations) + query = yield self.set_query() + yield self._list(query=query, **limitations) logging.debug('list end') @swagger.operation(nickname="createTest") @@ -140,17 +143,28 @@ class TestsGURHandler(GenericTestHandler): logging.error('except:%s', e) return + @gen.coroutine + def _convert_to_id(self, email): + query = {"email": email} + table = "users" + if query and table: + data = yield dbapi.db_find_one(table, query) + if data: + raise gen.Return((True, 'Data alreay exists. %s' % (query), + data.get("openid"))) + raise gen.Return((False, 'Data does not exist. %s' % (query), None)) + @gen.coroutine def update(self, test_id, item, value): logging.debug("update") if item == "shared": - if len(value) != len(set(value)): - msg = "Already shared with this user" - self.finish_request({'code': '403', 'msg': msg}) - return - + new_list = [] for user in value: - query = {"openid": user} + ret, msg, user_id = yield self._convert_to_id(user) + if ret: + user = user_id + new_list.append(user) + query = {"$or": [{"openid": user}, {"email": user}]} table = "users" ret, msg = yield self._check_if_exists(table=table, query=query) @@ -159,6 +173,11 @@ class TestsGURHandler(GenericTestHandler): self.finish_request({'code': '403', 'msg': msg}) return + if len(new_list) != len(set(new_list)): + msg = "Already shared with this user" + self.finish_request({'code': '403', 'msg': msg}) + return + logging.debug("before _update") self.json_args = {} self.json_args[item] = value @@ -169,9 +188,9 @@ class TestsGURHandler(GenericTestHandler): query = {'id': test_id} db_keys = ['id', ] - user = self.get_secure_cookie(auth_const.OPENID) + curr_user = self.get_secure_cookie(auth_const.OPENID) if item == "shared": - query['owner'] = user + query['owner'] = curr_user db_keys.append('owner') logging.debug("before _update 2") self._update(query=query, db_keys=db_keys) -- cgit 1.2.3-korg