Skip to content

Commit c67ed9a

Browse files
committed
refactored code to make names consistent
1 parent 17fdd53 commit c67ed9a

File tree

10 files changed

+67
-33
lines changed

10 files changed

+67
-33
lines changed

api/api.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from .handlers.reporthandler import ReportHandler
1414
from .handlers.resolvehandler import ResolveHandler
1515
from .handlers.roothandler import RootHandler
16-
from .handlers.savedsearchhandler import SavedSearchHandler
16+
from .handlers.savesearchhandler import SaveSearchHandler
1717
from .handlers.schemahandler import SchemaHandler
1818
from .handlers.userhandler import UserHandler
1919
from .jobs.handlers import BatchHandler, JobsHandler, JobHandler, GearsHandler, GearHandler, RulesHandler, RuleHandler
@@ -110,10 +110,10 @@ def prefix(path, routes):
110110
route('/dataexplorer/index/fields', DataExplorerHandler, h='index_field_names', m=['POST']),
111111

112112
# Search Saving
113-
route('/savesearch', SavedSearchHandler, m=['POST']),
114-
route('/savesearch', SavedSearchHandler, h='get_all', m=['GET']),
115-
route('/savesearch/<sid:{cid}>', SavedSearchHandler, m=['GET','DELETE']),
116-
route('/savesearch/<sid:{cid}>', SavedSearchHandler, h='replace_search', m=['POST']),
113+
route('/savesearches', SaveSearchHandler, m=['POST']),
114+
route('/savesearches', SaveSearchHandler, h='get_all', m=['GET']),
115+
route('/savesearches/<sid:{cid}>', SaveSearchHandler, m=['GET','DELETE']),
116+
route('/savesearches/<sid:{cid}>', SaveSearchHandler, h='replace_search', m=['POST']),
117117

118118
# Users
119119

@@ -235,7 +235,7 @@ def prefix(path, routes):
235235

236236
# Collections / Projects
237237

238-
prefix('/<cont_name:collections|projects>', [
238+
prefix('/<cont_name:collections|projects|savesearches>', [
239239
prefix('/<cid:{cid}>', [
240240
route('/<list_name:permissions>', PermissionsListHandler, m=['POST']),
241241
route('/<list_name:permissions>/<_id:{uid}>', PermissionsListHandler, m=['GET', 'PUT', 'DELETE']),

api/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ def initialize_db():
228228
# TODO review all indexes
229229
db.users.create_index('api_key.key')
230230
db.projects.create_index([('gid', 1), ('name', 1)])
231+
db.savesearches.create_index('creator')
231232
db.sessions.create_index('project')
232233
db.sessions.create_index('uid')
233234
db.sessions.create_index('created')

api/dao/containerstorage.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ def inflate_job_info(self, analysis):
406406
class SearchStorage(ContainerStorage):
407407

408408
def __init__(self):
409-
super(SearchStorage, self).__init__('searches', use_object_id=True)
409+
super(SearchStorage, self).__init__('savesearches', use_object_id=True)
410410

411411
def replace_el(self, search):
412412
self.delete_el(search['_id'])

api/dao/containerutil.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
'acquisition': 'acquisitions',
1515
'collection': 'collections',
1616
'analysis': 'analyses',
17+
'savesearch': 'savesearches',
1718
}
1819
PLURAL_TO_SINGULAR = {p: s for s, p in SINGULAR_TO_PLURAL.iteritems()}
1920

api/handlers/listhandler.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ def initialize_list_configurations():
8282
'acquisitions': copy.deepcopy(container_default_configurations),
8383
'collections': copy.deepcopy(container_default_configurations),
8484
'analyses': copy.deepcopy(container_default_configurations),
85+
'savesearches': copy.deepcopy(container_default_configurations),
8586
}
8687
# preload the Storage instances for all configurations
8788
for cont_name, cont_config in list_container_configurations.iteritems():

api/handlers/savedsearchhandler.py renamed to api/handlers/savesearchhandler.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,17 @@
1111
log = config.log
1212
storage = SearchStorage()
1313

14-
class SavedSearchHandler(base.RequestHandler):
14+
class SaveSearchHandler(base.RequestHandler):
1515

1616
def __init__(self, request=None, response=None):
17-
super(SavedSearchHandler, self).__init__(request, response)
17+
super(SaveSearchHandler, self).__init__(request, response)
1818

1919
@require_login
2020
def post(self):
2121
payload = self.request.json_body
2222
validators.validate_data(payload, 'search-input.json', 'input', 'POST')
2323
payload['permissions'] = [{"_id": self.uid, "access": "admin"}]
24+
payload['creator'] = self.uid
2425
result = storage.create_el(payload)
2526
if result.acknowledged:
2627
if result.inserted_id:
@@ -49,10 +50,7 @@ def delete(self, sid):
4950

5051
def replace_search(self, sid):
5152
payload = self.request.json_body
52-
if payload.get('_id'):
53-
del(payload['_id'])
54-
if payload.get('permissions'):
55-
del(payload['permissions'])
53+
payload = self._scrub_replace(payload)
5654
validators.validate_data(payload, 'search-input.json', 'input', 'POST')
5755
payload['_id'] = bson.ObjectId(sid)
5856
search = storage.get_container(sid)
@@ -64,3 +62,15 @@ def replace_search(self, sid):
6462
if result.inserted_id:
6563
return {'_id': result.inserted_id}
6664
return {"hi" : "bye"}
65+
66+
def _scrub_replace(self, payload):
67+
'''
68+
Function to turn a search returned from a GET to a legal post/replace
69+
'''
70+
if payload.get('_id'):
71+
del(payload['_id'])
72+
if payload.get('permissions'):
73+
del(payload['permissions'])
74+
if payload.get('creator'):
75+
del(payload['creator'])
76+
return payload

raml/api.raml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,4 @@ resourceTypes:
5555
/acquisitions: !include resources/acquisitions.raml
5656
/projects: !include resources/projects.raml
5757
/report: !include resources/report.raml
58-
/savesearch: !include resources/savesearch.raml
58+
/savesearches: !include resources/savesearch.raml

raml/schemas/definitions/search.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"properties": {
3333
"_id": {"$ref":"../definitions/objectid.json#"},
3434
"label": {"$ref": "../definitions/container.json#/definitions/label"},
35-
"uid": {"$ref":"../definitions/container.json#/definitions/uid"},
35+
"creator": {"$ref":"../definitions/container.json#/definitions/uid"},
3636
"created": {"$ref":"../definitions/created-modified.json#/definitions/created"},
3737
"modified": {"$ref":"../definitions/created-modified.json#/definitions/modified"},
3838
"permissions": {

test/integration_tests/abao/abao_test_hooks.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1464,7 +1464,7 @@ hooks.before("GET /devices/{DeviceId} -> 404", function(test, done) {
14641464
});
14651465

14661466
// Save Search Tests
1467-
hooks.before("POST /savesearch -> 200", function(test, done) {
1467+
hooks.before("POST /savesearches -> 200", function(test, done) {
14681468
test.request.body = {
14691469
"label": "Lable",
14701470
"search": {
@@ -1473,26 +1473,26 @@ hooks.before("POST /savesearch -> 200", function(test, done) {
14731473
};
14741474
done();
14751475
})
1476-
hooks.after("POST /savesearch -> 200", function(test, done) {
1476+
hooks.after("POST /savesearches -> 200", function(test, done) {
14771477
search_id = test.response.body['_id'];
14781478
done();
14791479
})
14801480

1481-
hooks.before("POST /savesearch -> 400", function(test, done) {
1481+
hooks.before("POST /savesearches -> 400", function(test, done) {
14821482
test.request.body = {
14831483
"not-label": "Label"
14841484
};
14851485
done();
14861486
})
14871487

1488-
hooks.before("GET /savesearch/{SearchId} -> 200", function(test, done) {
1488+
hooks.before("GET /savesearches/{SearchId} -> 200", function(test, done) {
14891489
test.request.params = {
14901490
SearchId: search_id
14911491
};
14921492
done();
14931493
})
14941494

1495-
hooks.before("POST /savesearch/{SearchId} -> 200", function(test, done) {
1495+
hooks.before("POST /savesearches/{SearchId} -> 200", function(test, done) {
14961496
test.request.params = {
14971497
SearchId: search_id
14981498
};
@@ -1506,7 +1506,7 @@ hooks.before("POST /savesearch/{SearchId} -> 200", function(test, done) {
15061506
done();
15071507
})
15081508

1509-
hooks.before("POST /savesearch/{SearchId} -> 400", function(test, done) {
1509+
hooks.before("POST /savesearches/{SearchId} -> 400", function(test, done) {
15101510
test.request.params = {
15111511
SearchId: search_id
15121512
};
@@ -1516,7 +1516,7 @@ hooks.before("POST /savesearch/{SearchId} -> 400", function(test, done) {
15161516
done();
15171517
})
15181518

1519-
hooks.before("DELETE /savesearch/{SearchId} -> 200", function(test, done) {
1519+
hooks.before("DELETE /savesearches/{SearchId} -> 200", function(test, done) {
15201520
test.request.params = {
15211521
SearchId: search_id
15221522
};

test/integration_tests/python/test_savedsearch.py

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,69 @@
22
def test_search_saving(as_admin, data_builder):
33

44
# Try posting a malformed search
5-
r = as_admin.post('/savesearch', json={"not-label":"random-string"})
5+
r = as_admin.post('/savesearches', json={"not-label":"random-string"})
66
assert r.status_code == 400
77

88
# Try getting a non-existent saved search
9-
r = as_admin.get('/savesearch/000000000000000000000000')
9+
r = as_admin.get('/savesearches/000000000000000000000000')
1010
assert r.status_code == 404
1111

1212
# Save a search
13-
r = as_admin.post('/savesearch', json={'label': 'search1', 'search': {'return_type': 'session'}})
13+
r = as_admin.post('/savesearches', json={'label': 'search1', 'search': {'return_type': 'session'}})
1414
assert r.ok
1515
search = r.json()['_id']
1616

1717
# Get all searched user has access to
18-
r = as_admin.get('/savesearch')
18+
r = as_admin.get('/savesearches')
1919
assert r.ok
2020

2121
# Get the saved search by id
22-
r = as_admin.get('/savesearch/' + search)
22+
r = as_admin.get('/savesearches/' + search)
2323
assert r.ok
2424
assert r.json()['label'] == 'search1'
2525

2626
# Malformed search replace
2727
payload = {'label': 'good-label', 'search' : { 'not-return-type' : 'not-container'}}
28-
r = as_admin.post('/savesearch/' + search, json=payload)
28+
r = as_admin.post('/savesearches/' + search, json=payload)
2929
assert r.status_code == 400
3030

3131
# Replace search
32-
r = as_admin.get('/savesearch/' + search)
32+
r = as_admin.get('/savesearches/' + search)
3333
assert r.ok
3434
assert r.json()['label'] == 'search1'
3535
payload = r.json()
3636
payload['label'] = 'newSearch'
37-
r = as_admin.post('/savesearch/' + search, json=payload)
37+
r = as_admin.post('/savesearches/' + search, json=payload)
3838
assert r.ok
3939
assert r.json()['_id'] == search
40-
r = as_admin.get('/savesearch/' + search)
40+
r = as_admin.get('/savesearches/' + search)
4141
assert r.ok
4242
assert r.json()['label'] == 'newSearch'
4343

44+
# Add permission to search
45+
r = as_admin.post('/savesearches/' + search + '/permissions', json={'access': 'admin', '_id': '[email protected]'})
46+
assert r.ok
47+
r = as_admin.get('/savesearches/' + search)
48+
assert r.ok
49+
assert r.json()['permissions'][1]['_id'] == '[email protected]'
50+
51+
# Modify permission
52+
r = as_admin.put('/savesearches/' + search + '/permissions/[email protected]', json={'access': 'ro'})
53+
assert r.ok
54+
r = as_admin.get('/savesearches/' + search)
55+
assert r.ok
56+
assert r.json()['permissions'][1]['access'] == 'ro'
57+
58+
# Remove permission
59+
r = as_admin.delete('/savesearches/' + search + '/permissions/[email protected]')
60+
assert r.ok
61+
r = as_admin.get('/savesearches/' + search)
62+
assert r.ok
63+
assert len(r.json()['permissions']) == 1
64+
4465
# Delete saved search
45-
r = as_admin.delete('/savesearch/' + search)
66+
r = as_admin.delete('/savesearches/' + search)
4667
assert r.ok
47-
r = as_admin.get('/savesearch')
68+
r = as_admin.get('/savesearches')
4869
assert r.ok
4970
assert len(r.json()) == 0

0 commit comments

Comments
 (0)