def uploadTrackVersion(artistId, projectId, trackId): ''' Posts a new mix version to AWS [X] Updates on database [X] Updates on AWS [X] ''' user = current_user artist = User.query.get(artistId) project = Project.query.get(projectId) track = Track.query.get(trackId) if user.superUser: if track: if track.projectId == project.id: if project.artistId == artist.id: if project.engineerId == user.id: if "file" not in request.files: return {"errors": "file required"}, 400 file = request.files["file"] if not allowed_file(file.filename): return {"errors": "file type not permitted"}, 400 file.filename = get_unique_filename(file.filename) upload = upload_file_to_s3(file) db.session.flush() if "url" not in upload: return upload, 400 url = upload["url"] data = Version(url=upload["url"], length=3, trackId=track.id) db.session.add(data) db.session.commit() return data.to_dict() else: return { "Errors": f"{user.firstName} {user.lastName} cannot delete '{project.name}' because they are not on the project" } # noqa else: return { "Errors": f"'{project.name}' does not belong to {artist.firstName} {artist.lastName}" } # noqa else: return { "Errors": f"'{track.name}' does not belong to {project.name}" } # noqa else: return {"Errors": f"Track does not exist!"} else: return { "Errors": f"{user.firstName} {user.lastName} is not authorized to perform this action." } # noqa