Skip to content

Commit

Permalink
added analysis tests, removed nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
hkethi002 committed Sep 27, 2017
1 parent 6c9fa8e commit 25ae9a7
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 29 deletions.
37 changes: 8 additions & 29 deletions api/download.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,52 +322,34 @@ def summary(self):
req['_id'] = bson.ObjectId(req['_id'])
level = req['level']

containers = ['projects', 'sessions', 'acquisitions', 'analyses']
containers = ['projects', 'sessions', 'acquisitions']
cont_query = {}
if level == 'projects':
# Grab sessions and their ids
sessions = config.db.sessions.find({'project': req['_id']}, {'_id': 1})
session_ids = [s['_id'] for s in sessions]

# Grab acquisitions and their ids
acquisitions = config.db.acquisitions.find({'session': {'$in': session_ids}}, {'_id': 1})
acquisition_ids = [a['_id'] for a in acquisitions]
parent_ids = [req['_id']] + session_ids + acquisition_ids

# # Grab analyses and their ids
# analysis_ids = [an['_id'] for an in config.db.analyses.find({'parent.id': {'$in': parent_ids}})]

# for each type of container below it will have a slightly modified match query
cont_query = {
'projects': {'_id': req['_id']},
'sessions': {'project': req['_id']},
'acquisitions': {'session': {'$in': session_ids}},
'analyses': {'parent.id': {'$in': parent_ids}}
'acquisitions': {'session': {'$in': session_ids}}
}
elif level == 'sessions':

# Grab acquisitions and their ids
acquisitions = config.db.acquisitions.find({'session': req['_id']}, {'_id': 1})
acquisition_ids = [a['_id'] for a in acquisitions]
parent_ids = [req['_id']] + acquisition_ids

# # Grab analyses and their ids
# analysis_ids = [an['_id'] for an in config.db.analyses.find({'parent.id': {'$in': parent_ids}})]

# for each type of container below it will have a slightly modified match query
cont_query = {
'sessions': {'_id': req['_id']},
'acquisitions': {'session': req['_id']},
'analyses': {'parent.id': {'$in': parent_ids}}
'acquisitions': {'session': req['_id']}
}
containers = containers[1:]
elif level == 'acquisitions':

cont_query['acquisitions'] = {'_id': req['_id']}
containers = ['acquisitions']
containers = containers[-1:]
elif level == 'analyses':
cont_query['analyses'] = {'_id': req['_id']}
containers = containers[-1:]
containers = ['analyses']
else:
self.abort(400, "{} not a recognized level".format(level))

Expand All @@ -381,25 +363,22 @@ def summary(self):
{'$group': {
'_id': '$type',
'count': {'$sum' : 1},
'mb_total': {'$sum':'$mbs'},
'nodes' : {
'$addToSet': {'level': {'$literal':cont_name}, '_id': '$_id'}
}
'mb_total': {'$sum':'$mbs'}
}}
]

try:
result = config.db.command('aggregate', cont_name, pipeline=pipeline)
except Exception as e: # pylint: disable=broad-except
self.abort(500, str(e))
log.warning(e)
self.abort(500, "Failure to load summary")

if result.get("ok"):
for doc in result.get("result"):
type_ = doc['_id']
if res.get(type_):
res[type_]['count'] += doc.get('count',0)
res[type_]['mb_total'] += doc.get('mb_total',0)
res[type_]['nodes'] += doc.get('nodes', [])
else:
res[type_] = doc
return res
Expand Down
9 changes: 9 additions & 0 deletions test/integration_tests/python/test_download.py
Original file line number Diff line number Diff line change
Expand Up @@ -442,4 +442,13 @@ def test_summary(data_builder, as_admin, file_form):

r = as_admin.post('/download/summary', json={"level":"groups", "_id":missing_object_id})
assert r.status_code == 400

r = as_admin.post('/sessions/' + session + '/analyses', files=file_form(
file_name, meta={'label': 'test', 'inputs':[{'name':file_name}]}))
assert r.ok
analysis = r.json()['_id']

r = as_admin.post('/download/summary', json={"level":"analyses", "_id":analysis})
assert r.ok
assert len(r.json()) == 1
assert r.json().get("tabular data", {}).get("count",0) == 1

0 comments on commit 25ae9a7

Please sign in to comment.