summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerena Feng <feng.xiaowei@zte.com.cn>2018-01-04 05:59:33 +0000
committerGerrit Code Review <gerrit@opnfv.org>2018-01-04 05:59:33 +0000
commit28edfefe25420964a8ca961f45f3b8860f60b6d6 (patch)
tree8d2d91e20784dadb46d07384fda55f3ab100eff5
parentc72bebf41dbd08facb7398fa94680d812ea38a62 (diff)
parentf505dab1f5f26154619ec5c30cabbd8efaad173e (diff)
Merge "leverage query_by_name decorator to simplify name querying"
-rw-r--r--testapi/opnfv_testapi/common/check.py14
-rw-r--r--testapi/opnfv_testapi/handlers/base_handlers.py8
-rw-r--r--testapi/opnfv_testapi/handlers/pod_handlers.py11
-rw-r--r--testapi/opnfv_testapi/handlers/project_handlers.py11
-rw-r--r--testapi/opnfv_testapi/tests/unit/fake_pymongo.py3
-rw-r--r--testapi/setup.cfg2
6 files changed, 23 insertions, 26 deletions
diff --git a/testapi/opnfv_testapi/common/check.py b/testapi/opnfv_testapi/common/check.py
index 5dfbc75..333871d 100644
--- a/testapi/opnfv_testapi/common/check.py
+++ b/testapi/opnfv_testapi/common/check.py
@@ -158,3 +158,17 @@ def updated_one_not_exist(xstep):
ret = yield gen.coroutine(xstep)(self, data, *args, **kwargs)
raise gen.Return(ret)
return wrap
+
+
+def query_by_name(xstep):
+ @functools.wraps(xstep)
+ def wrap(self, *args, **kwargs):
+ if 'name' in self.request.query_arguments.keys():
+ query = kwargs.get('query', {})
+ query.update({'name': re.compile(self.get_query_argument('name'), re.IGNORECASE)})
+ kwargs.update({'query': query})
+
+ ret = yield gen.coroutine(xstep)(self, *args, **kwargs)
+ raise gen.Return(ret)
+
+ return wrap
diff --git a/testapi/opnfv_testapi/handlers/base_handlers.py b/testapi/opnfv_testapi/handlers/base_handlers.py
index a2fdb19..bc91f64 100644
--- a/testapi/opnfv_testapi/handlers/base_handlers.py
+++ b/testapi/opnfv_testapi/handlers/base_handlers.py
@@ -103,7 +103,8 @@ class GenericApiHandler(web.RequestHandler):
@web.asynchronous
@gen.coroutine
- def _list(self, query=None, res_op=None, *args, **kwargs):
+ @check.query_by_name
+ def _list(self, query=None, **kwargs):
sort = kwargs.get('sort')
page = kwargs.get('page', 0)
last = kwargs.get('last', 0)
@@ -131,10 +132,7 @@ class GenericApiHandler(web.RequestHandler):
cursor = dbapi.db_aggregate(self.table, pipelines)
while (yield cursor.fetch_next):
data.append(self.format_data(cursor.next_object()))
- if res_op is None:
- res = {self.table: data}
- else:
- res = res_op(data, *args)
+ res = {self.table: data}
if page > 0:
res.update({
'pagination': {
diff --git a/testapi/opnfv_testapi/handlers/pod_handlers.py b/testapi/opnfv_testapi/handlers/pod_handlers.py
index 06a8b17..03c2033 100644
--- a/testapi/opnfv_testapi/handlers/pod_handlers.py
+++ b/testapi/opnfv_testapi/handlers/pod_handlers.py
@@ -6,7 +6,6 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-import re
from opnfv_testapi.handlers import base_handlers
from opnfv_testapi.models import pod_models
@@ -19,14 +18,6 @@ class GenericPodHandler(base_handlers.GenericApiHandler):
self.table = 'pods'
self.table_cls = pod_models.Pod
- def set_query(self):
- query = dict()
- for k in self.request.query_arguments.keys():
- v = self.get_query_argument(k)
- if k == 'name':
- query['name'] = re.compile(v, re.IGNORECASE)
- return query
-
class PodCLHandler(GenericPodHandler):
@swagger.operation(nickname='listAllPods')
@@ -40,7 +31,7 @@ class PodCLHandler(GenericPodHandler):
@in name: query
@required name: False
"""
- self._list(query=self.set_query())
+ self._list()
@swagger.operation(nickname='createPod')
def post(self):
diff --git a/testapi/opnfv_testapi/handlers/project_handlers.py b/testapi/opnfv_testapi/handlers/project_handlers.py
index 3ba1a80..0800ee8 100644
--- a/testapi/opnfv_testapi/handlers/project_handlers.py
+++ b/testapi/opnfv_testapi/handlers/project_handlers.py
@@ -6,7 +6,6 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-import re
from opnfv_testapi.handlers import base_handlers
from opnfv_testapi.models import project_models
@@ -21,14 +20,6 @@ class GenericProjectHandler(base_handlers.GenericApiHandler):
self.table = 'projects'
self.table_cls = project_models.Project
- def set_query(self):
- query = dict()
- for k in self.request.query_arguments.keys():
- v = self.get_query_argument(k)
- if k == 'name':
- query['name'] = re.compile(v, re.IGNORECASE)
- return query
-
class ProjectCLHandler(GenericProjectHandler):
@swagger.operation(nickname="listProjects")
@@ -47,7 +38,7 @@ class ProjectCLHandler(GenericProjectHandler):
@in name: query
@required name: False
"""
- self._list(query=self.set_query())
+ self._list()
@swagger.operation(nickname="createProject")
def post(self):
diff --git a/testapi/opnfv_testapi/tests/unit/fake_pymongo.py b/testapi/opnfv_testapi/tests/unit/fake_pymongo.py
index 39b7e6a..a9c04bb 100644
--- a/testapi/opnfv_testapi/tests/unit/fake_pymongo.py
+++ b/testapi/opnfv_testapi/tests/unit/fake_pymongo.py
@@ -178,6 +178,9 @@ class MemDb(object):
elif i_k == 'versions.projects.project':
return self._in_scenarios_project(i_v,
content)
+ elif isinstance(v, re._pattern_type):
+ if v.match(content.get(k, None)) is None:
+ return False
elif content.get(k, None) != v:
return False
diff --git a/testapi/setup.cfg b/testapi/setup.cfg
index e83da5e..570d138 100644
--- a/testapi/setup.cfg
+++ b/testapi/setup.cfg
@@ -24,7 +24,7 @@ packages =
opnfv_testapi
data_files =
- /etc/opnfv_testapi = etc/config.ini
+# /etc/opnfv_testapi = etc/config.ini
/usr/local/share/opnfv_testapi = 3rd_party/static/*
/usr/local/share/opnfv_testapi/testapi-ui = opnfv_testapi/ui/*