diff --git a/api/placer.py b/api/placer.py index 107aacee4db1dba28222e737845f4e924e1cace6..5646592ce2bf7e516ebd3fbe17dcf219199d6e1a 100644 --- a/api/placer.py +++ b/api/placer.py @@ -382,7 +382,9 @@ class PackfilePlacer(Placer): # Populated in check(), used in finalize() self.p_id = None self.s_label = None + self.s_code = None self.a_label = None + self.a_time = None self.g_id = None self.permissions = {} @@ -422,6 +424,12 @@ class PackfilePlacer(Placer): self.s_label = self.metadata['session']['label'] self.a_label = self.metadata['acquisition']['label'] + # Save additional fields if provided + self.s_code = self.metadata['session'].get('subject', {}).get('code') + self.a_time = self.metadata['acquisition'].get('timestamp') + if self.a_time: + self.a_time = dateutil.parser.parse(self.a_time) + # Get project info that we need later project = config.db['projects'].find_one({ '_id': bson.ObjectId(self.p_id)}) self.permissions = project.get('permissions', {}) @@ -547,6 +555,10 @@ class PackfilePlacer(Placer): 'group': self.g_id } + if self.s_code: + # If they supplied a subject code, use that in the query as well + query['subject.code'] = self.s_code + # Updates if existing updates = {} updates['permissions'] = self.permissions @@ -576,6 +588,11 @@ class PackfilePlacer(Placer): 'label': self.a_label, } + if self.a_time: + # If they supplied an acquisition timestamp, use that in the query as well + query['timestamp'] = self.a_time + + # Updates if existing updates = {} updates['permissions'] = self.permissions