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()
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()