def async_find_and_attach(upload_id): """ Task backend for Vscan upload """ case = None try: upload_doc = VscanUpload.get(upload_id) files = get_files_from_doc(upload_doc) case = match_case( upload_doc.scanner_serial, upload_doc.scan_id, ) if case: files = {} attachments = (upload_doc.blobs if isinstance( upload_doc, BlobMixin) else upload_doc._attachments) for f in attachments: files[f] = io.BytesIO(upload_doc.fetch_attachment(f)) attach_images_to_case(case._id, files) else: return -1 upload_doc.delete() except: # mark the case as having errored (if we know what it is) # but reraise the error since we don't want to hide it if case: submit_error_case(case._id) raise
def async_find_and_attach(upload_id): """ Task backend for Vscan upload """ case = None try: upload_doc = VscanUpload.get(upload_id) files = get_files_from_doc(upload_doc) case = match_case(upload_doc.scanner_serial, upload_doc.scan_id) if case: files = {} for f in upload_doc._attachments.keys(): files[f] = io.BytesIO(upload_doc.fetch_attachment(f)) attach_images_to_case(case._id, files) else: return -1 upload_doc.delete() except: # mark the case as having errored (if we know what it is) # but reraise the error since we don't want to hide it if case: submit_error_case(case._id) raise