Skip to content

Commit 7361cb9

Browse files
committed
added analysis tests, removed nodes
1 parent efb24c6 commit 7361cb9

File tree

2 files changed

+17
-29
lines changed

2 files changed

+17
-29
lines changed

api/download.py

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -322,52 +322,34 @@ def summary(self):
322322
req['_id'] = bson.ObjectId(req['_id'])
323323
level = req['level']
324324

325-
containers = ['projects', 'sessions', 'acquisitions', 'analyses']
325+
containers = ['projects', 'sessions', 'acquisitions']
326326
cont_query = {}
327327
if level == 'projects':
328328
# Grab sessions and their ids
329329
sessions = config.db.sessions.find({'project': req['_id']}, {'_id': 1})
330330
session_ids = [s['_id'] for s in sessions]
331331

332-
# Grab acquisitions and their ids
333-
acquisitions = config.db.acquisitions.find({'session': {'$in': session_ids}}, {'_id': 1})
334-
acquisition_ids = [a['_id'] for a in acquisitions]
335-
parent_ids = [req['_id']] + session_ids + acquisition_ids
336-
337-
# # Grab analyses and their ids
338-
# analysis_ids = [an['_id'] for an in config.db.analyses.find({'parent.id': {'$in': parent_ids}})]
339-
340332
# for each type of container below it will have a slightly modified match query
341333
cont_query = {
342334
'projects': {'_id': req['_id']},
343335
'sessions': {'project': req['_id']},
344-
'acquisitions': {'session': {'$in': session_ids}},
345-
'analyses': {'parent.id': {'$in': parent_ids}}
336+
'acquisitions': {'session': {'$in': session_ids}}
346337
}
347338
elif level == 'sessions':
348339

349-
# Grab acquisitions and their ids
350-
acquisitions = config.db.acquisitions.find({'session': req['_id']}, {'_id': 1})
351-
acquisition_ids = [a['_id'] for a in acquisitions]
352-
parent_ids = [req['_id']] + acquisition_ids
353-
354-
# # Grab analyses and their ids
355-
# analysis_ids = [an['_id'] for an in config.db.analyses.find({'parent.id': {'$in': parent_ids}})]
356-
357340
# for each type of container below it will have a slightly modified match query
358341
cont_query = {
359342
'sessions': {'_id': req['_id']},
360-
'acquisitions': {'session': req['_id']},
361-
'analyses': {'parent.id': {'$in': parent_ids}}
343+
'acquisitions': {'session': req['_id']}
362344
}
363345
containers = containers[1:]
364346
elif level == 'acquisitions':
365347

366348
cont_query['acquisitions'] = {'_id': req['_id']}
367-
containers = ['acquisitions']
349+
containers = containers[-1:]
368350
elif level == 'analyses':
369351
cont_query['analyses'] = {'_id': req['_id']}
370-
containers = containers[-1:]
352+
containers = ['analyses']
371353
else:
372354
self.abort(400, "{} not a recognized level".format(level))
373355

@@ -381,25 +363,22 @@ def summary(self):
381363
{'$group': {
382364
'_id': '$type',
383365
'count': {'$sum' : 1},
384-
'mb_total': {'$sum':'$mbs'},
385-
'nodes' : {
386-
'$addToSet': {'level': {'$literal':cont_name}, '_id': '$_id'}
387-
}
366+
'mb_total': {'$sum':'$mbs'}
388367
}}
389368
]
390369

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

396376
if result.get("ok"):
397377
for doc in result.get("result"):
398378
type_ = doc['_id']
399379
if res.get(type_):
400380
res[type_]['count'] += doc.get('count',0)
401381
res[type_]['mb_total'] += doc.get('mb_total',0)
402-
res[type_]['nodes'] += doc.get('nodes', [])
403382
else:
404383
res[type_] = doc
405384
return res

test/integration_tests/python/test_download.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,4 +442,13 @@ def test_summary(data_builder, as_admin, file_form):
442442

443443
r = as_admin.post('/download/summary', json={"level":"groups", "_id":missing_object_id})
444444
assert r.status_code == 400
445+
446+
r = as_admin.post('/sessions/' + session + '/analyses', files=file_form(
447+
file_name, meta={'label': 'test', 'inputs':[{'name':file_name}]}))
448+
assert r.ok
449+
analysis = r.json()['_id']
445450

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

0 commit comments

Comments
 (0)