diff --git a/util.py b/util.py index 2de0e2ec68d29eda10679d48c8a9e80dd7a8d0f8..1799a8cd0c66be6f1876d035aaa18dc88d26484f 100644 --- a/util.py +++ b/util.py @@ -68,6 +68,7 @@ def insert_file(dbc, _id, file_info, filepath, digest, data_path, quarantine_pat if not success['updatedExisting']: dbc.update({'_id': _id}, {'$push': {flavor: file_info}}) shutil.move(filepath, container_path + '/' + filename) + create_job(dbc, dataset) log.debug('Done %s' % os.path.basename(filepath)) # must use filepath, since filename is updated for sorted files return 200, 'Success' @@ -125,10 +126,9 @@ def _update_db(db, dataset): db.projects.update({'_id': project['_id']}, {'$max': dict(timestamp=dataset.nims_timestamp)}) db.sessions.update({'_id': session['_id']}, {'$min': dict(timestamp=dataset.nims_timestamp), '$set': dict(timezone=dataset.nims_timezone)}) # create a job, if necessary - create_job(db, dataset) return acquisition['_id'] -def create_job(db, dataset): +def create_job(dbc, dataset): # TODO: this should search the 'apps' db collection. # each 'app' must define it's expected inputs's type, state and kind # some apps are special defaults. one default per data specific triple. @@ -143,6 +143,9 @@ def create_job(db, dataset): # 'state_': fstate[-1], # string # }) # apps specify the last state of their desired input file. + + db = dbc.database + type_ = dataset.nims_file_type kinds_ = dataset.nims_file_kinds state_ = dataset.nims_file_state @@ -161,6 +164,12 @@ def create_job(db, dataset): output_kinds = dataset.nims_file_kinds # from input file # TODO: determine job specifications + # force acquisition dicom file to be marked as 'optional = True' + db.acquisitions.find_and_modify( + {'uid': dataset.nims_acquisition_id, 'files.type': 'dicom'}, + {'$set': {'files.$.optional': True}}, + ) + if not app_id: log.info('no app for type=%s, state=%s, kinds=%s, default=True. no job created.' % (type_, state_, kinds_)) else: