def post(self, oauth, resource_id): """ Upload a file """ d = Deposition.get(resource_id, user=current_user) # Bail-out early if not permitted (add_file will also check, but then # we already uploaded the file) if not d.authorize('add_file'): raise ForbiddenAction('add_file', d) uploaded_file = request.files['file'] filename = secure_filename( request.form.get('filename') or uploaded_file.filename ) df = DepositionFile(backend=DepositionStorage(d.id)) if df.save(uploaded_file, filename=filename): try: d.add_file(df) d.save() except FilenameAlreadyExists as e: df.delete() raise e return d.type.marshal_file(df), 201
def post(self, resource_id): """Upload a file.""" d = Deposition.get(resource_id, user=current_user) # Bail-out early if not permitted (add_file will also check, but then # we already uploaded the file) if not d.authorize('add_file'): raise ForbiddenAction('add_file', d) uploaded_file = request.files['file'] filename = secure_filename( request.form.get('filename') or uploaded_file.filename ) df = DepositionFile(backend=DepositionStorage(d.id)) if df.save(uploaded_file, filename=filename): try: d.add_file(df) d.save() except FilenameAlreadyExists as e: df.delete() raise e return d.type.marshal_file(df), 201
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()
def deposition_with_files(files, user_id=None, deposition_id=None): """Add very big files to a deposition.""" if deposition_id: d = Deposition.get(deposition_id) else: d = Deposition.create(User.query.get(user_id)) for filepath in files: with open(filepath, "rb") as fileobj: filename = os.path.basename(filepath) df = DepositionFile(backend=DepositionStorage(d.id)) df.save(fileobj, filename=filename) d.add_file(df) return d