Example #1
0
def add_file_by_name(model, file_path, filename=None):
    """Save given file to storage and attach to object, return new path."""
    from inspire.modules.workflows.models import PayloadStorage
    from invenio_deposit.models import (
        Deposition,
        Agent,
        DepositionDraft,
        SubmissionInformationPackage,
        DepositionStorage,
        DepositionFile,
        FilenameAlreadyExists,
    )

    filename = filename or os.path.basename(file_path)
    try:
        with open(file_path) as fd:
            file_object = DepositionFile(backend=PayloadStorage(model.id))
            if file_object.save(fd, filename=filename):
                super(type(model), model).add_file(file_object)
                model.save()
    except FilenameAlreadyExists as e:
        file_object.delete()
        raise e
    if file_object.is_local():
        return file_object.get_syspath()
    else:
        return file_object.get_url()
Example #2
0
def add_file_by_name(model, file_path, filename=None):
    """Save given file to storage and attach to object, return new path."""
    from inspirehep.modules.workflows.models import PayloadStorage
    from invenio_deposit.models import (
        DepositionFile,
        FilenameAlreadyExists,
    )

    filename = filename or os.path.basename(file_path)
    try:
        with open(file_path) as fd:
            file_object = DepositionFile(backend=PayloadStorage(model.id))
            if file_object.save(fd, filename=filename):
                super(type(model), model).add_file(file_object)
                model.update()
    except FilenameAlreadyExists as e:
        file_object.delete()
        raise e
    if file_object.is_local():
        return file_object.get_syspath()
    else:
        return file_object.get_url()