diff --git a/api/sessions.py b/api/sessions.py index 4a04b5c6df25d7905c5ed9093af074b98487d057..d3368bcf8fac56b9f0dc2bb74527328aa3ef0968 100644 --- a/api/sessions.py +++ b/api/sessions.py @@ -115,11 +115,19 @@ class Sessions(containers.ContainerList): query = {'group': gid} else: query = {} - projection = ['label', 'subject_code', 'subject.code', 'project', 'group'] + projection = ['label', 'subject_code', 'subject.code', 'project', 'group', 'subject.age', 'subject.sex'] sessions = self._get(query, projection, self.request.GET.get('admin', '').lower() in ('1', 'true')) + session_measurements = {} + if self.request.GET.get('measurements', '').lower() in ('1', 'true'): + session_measurements = self.app.db.acquisitions.aggregate([ + {'$match': {'session': {'$in': [sess['_id'] for sess in sessions]}}}, + {'$group': {'_id': '$session', 'measurements': {'$addToSet': '$datatype'}}} + ]) + session_measurements = {sess['_id']: sess['measurements'] for sess in session_measurements} for sess in sessions: + sess['measurements'] = session_measurements.get(sess['_id'], None) if 'subject_code' not in sess: - sess['subject_code'] = sess.pop('subject', {}).get('code', '') # FIXME when subject is pulled out of session + sess['subject_code'] = sess.get('subject', {}).get('code', '') # FIXME when subject is pulled out of session if self.debug: for sess in sessions: sid = str(sess['_id'])