Esempio n. 1
0
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
Esempio n. 2
0
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