@@ -880,16 +880,17 @@ def _build_project_report(self, base_query):
880880 acquisition_ids = [a ['_id' ] for a in acquisitions ]
881881
882882 # For the project and each session and acquisition, create a list of analysis ids
883- ids = session_ids + acquisition_ids + [p ['_id' ]]
884- analysis_ids = [an ['_id' ] for an in config .db .analyses .find ({'parent.id' : {'$in' : ids }})]
883+ parent_ids = session_ids + acquisition_ids + [p ['_id' ]]
884+ analysis_ids = [an ['_id' ] for an in config .db .analyses .find ({'parent.id' : {'$in' : parent_ids }})]
885885
886886 report_obj ['session_count' ] = len (session_ids )
887887
888888 # for each type of container below it will have a slightly modified match query
889889 cont_query = {
890890 'projects' : {'_id' : {'project' : p ['_id' ]}},
891891 'sessions' : {'project' : p ['_id' ]},
892- 'acquisitions' : {'session' : {'$in' : session_ids }}
892+ 'acquisitions' : {'session' : {'$in' : session_ids }},
893+ 'analyses' : {'parent.id' : {'$in' :parent_ids }}
893894 }
894895
895896 # Create queries for files and analyses based on created date if a range was provided
@@ -900,7 +901,7 @@ def _build_project_report(self, base_query):
900901 file_q ['files.created' ] = base_query ['created' ]
901902 analysis_q ['analyses.created' ] = base_query ['created' ]
902903
903- for cont_name in ['projects' , 'sessions' , 'acquisitions' ]:
904+ for cont_name in ['projects' , 'sessions' , 'acquisitions' , 'analyses' ]:
904905
905906 # Aggregate file size in megabytes
906907 pipeline = [
@@ -919,24 +920,6 @@ def _build_project_report(self, base_query):
919920 if result :
920921 report_obj ['file_mbs' ] += result ['mb_total' ]
921922
922- # Aggregate analysis file size in megabytes
923- pipeline = [
924- {'$match' : cont_query [cont_name ]},
925- {'$unwind' : '$analyses' },
926- {'$unwind' : '$analyses.files' },
927- {'$match' : analysis_q },
928- {'$project' : {'mbs' : {'$divide' : ['$analyses.files.size' , BYTES_IN_MEGABYTE ]}}},
929- {'$group' : {'_id' : 1 , 'mb_total' : {'$sum' :'$mbs' }}}
930- ]
931-
932- try :
933- result = self ._get_result (config .db .command ('aggregate' , cont_name , pipeline = pipeline ))
934- except APIReportException :
935- result = None
936-
937- if result :
938- report_obj ['file_mbs' ] += result ['mb_total' ]
939-
940923 # Create a list of all possible ids in this project hierarchy
941924 id_list = analysis_ids + acquisition_ids + session_ids
942925 id_list .append (p ['_id' ])
0 commit comments