Example #1
0
def save_deposition_file(deposition, filename, file_path):
    """Save files in Deposition."""
    with open(file_path) as fd:
        df = DepositionFile(backend=DepositionStorage(deposition.id))
        if df.save(fd, filename=filename):
            deposition.add_file(df)
            deposition.save()
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 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 #3
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()
Example #4
0
 def __setstate__(self, state):
     """Deserialize deposition from state stored in BibWorkflowObject."""
     self.type = self.get_type(state['type'])  # FIXME only difference
     self.title = state['title']
     self.files = [
         DepositionFile.factory(
             f_state,
             uuid=f_state['id'],
             backend=DepositionStorage(self.id),
         )
         for f_state in state['files']
     ]
     self.drafts = dict(
         [(d_id, DepositionDraft.factory(d_state, d_id,
                                         deposition_ref=self))
          for d_id, d_state in state['drafts'].items()]
     )
     self.sips = [
         SubmissionInformationPackage.factory(s_state, uuid=s_state['id'])
         for s_state in state.get('sips', [])
     ]