예제 #1
0
def edit_song():

    matched_song = Song.query.get(request.form['SongId'])
    url_image = None
    url_song = None
    if "image" in request.files:
        image = request.files["image"]
        image.filename = get_unique_filename(image.filename)
        upload = upload_file_to_s3(image)
        url_image = upload["url"]
    if "audio" in request.files:
        song_file = request.files["audio"]
        song_file.filename = get_unique_filename(song_file.filename)
        upload = upload_file_to_s3(song_file)
        url_song = upload["url"]   

    matched_song.title = request.form['title']
    matched_song.description = request.form['description']
    matched_song.genre = request.form['genre']
    matched_song.image_url = url_image
    matched_song.artist = request.form['artist']
    matched_song.audio_file = url_song
    db.session.commit()
    data = matched_song.to_dict()
    return data
예제 #2
0
def edit_song():

    matched_song = Song.query.get(request.form['id'])
    url_image = None
    url_song = None
    if "song" in request.files:
        song_file = request.files["song"]
        song_file.filename = get_unique_filename(song_file.filename)
        upload = upload_file_to_s3(song_file)
        url_song = upload["url"]
    else:
        url_song = matched_song.song
    if "image_url" in request.files:
        image = request.files["image_url"]
        image.filename = get_unique_filename(image.filename)
        upload = upload_file_to_s3(image)
        url_image = upload["url"]
    else:
        url_image = matched_song.image_url
    matched_song.name = request.form['name']
    matched_song.description = request.form['description']
    matched_song.album = request.form['album']
    matched_song.image_url = url_image
    matched_song.category = request.form['category']
    matched_song.song = url_song
    db.session.commit()
    data = matched_song.to_dict()
    return data
예제 #3
0
def add_song():
    url_image = None
    url_song = None
    if "image_url" in request.files:
        image = request.files["image_url"]
        image.filename = get_unique_filename(image.filename)
        upload = upload_file_to_s3(image)
        url_image = upload["url"]
    else:
        url_image = 'https://i.stack.imgur.com/l60Hf.png'
    if "song" in request.files:
        song_file = request.files["song"]
        song_file.filename = get_unique_filename(song_file.filename)
        upload = upload_file_to_s3(song_file)
        url_song = upload["url"]
        print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
        print(url_song)

    form = SongForm()
    form['csrf_token'].data = request.cookies['csrf_token']
    new_song = Song(
        artist_id=request.form['artist_id'],
        name=request.form['name'],
        description=request.form['description'],
        category=request.form['category'],
        album=request.form['album'],
        image_url=url_image,
        song=url_song,
        # public=request.form['public'],
    )

    db.session.add(new_song)
    db.session.commit()
    data = new_song.to_dict()
    return data
예제 #4
0
def upload_image(id):
    if "image" not in request.files:
        return print("no image")

    image = request.files["image"]

    if not allowed_file(image.filename):
        return {"errors": "file type not permitted"}, 400

    image.filename = get_unique_filename(image.filename)

    upload = upload_file_to_s3(image)

    if "url" not in upload:
        # if the dictionary doesn't have a url key
        # it means that there was an error when we tried to upload
        # so we send back that error message
        return upload, 400

    url = upload["url"]
    # flask_login allows us to get the current user from the request
    new_image = MyAWS(spot_id=id,
                      aws_url=url,
                      rss_feed_url="arn:aws:s3:::captain-hagi")
    db.session.add(new_image)
    db.session.commit()

    return {"url": url}
예제 #5
0
def edit_user():
    # """
    # Creates a new user and logs them in
    # """
    # user = request.form['id']
    # matched_user = User.query.get(user)
    # if "image" in request.files:
    #     image = request.files["image"]
    #     image.filename = get_unique_filename(image.filename)
    #     upload = upload_file_to_s3(image)
    #     url = upload["url"]
    # else:
    #     url = None
    # matched_user.profile_URL = url
    # db.session.commit()
    # return matched_user.to_dict()
    matched_user = User.query.get(request.form['id'])
    url_image = None
    if "profile_URL" in request.files:
        image = request.files["profile_URL"]
        image.filename = get_unique_filename(image.filename)
        upload = upload_file_to_s3(image)
        url_image = upload["url"]
    else:
        url_image = matched_user.profile_URL
    matched_user.username = request.form['username']
    matched_user.email = request.form['email']
    matched_user.password = request.form['password']
    matched_user.profile_URL = url_image
    db.session.commit()
    data = matched_user.to_dict()
    return data
예제 #6
0
def sign_up():
    """
    Creates a new user and logs them in
    """
    url = None
    if "image" in request.files:
        image = request.files["image"]
        image.filename = get_unique_filename(image.filename)
        upload = upload_file_to_s3(image)
        url = upload["url"]
    else:
        url = 'https://i.stack.imgur.com/l60Hf.png'
    form = SignUpForm()
    form['csrf_token'].data = request.cookies['csrf_token']
    if form.validate_on_submit():
        user = User(
            username=request.form['username'],
            email=request.form['email'],
            password=request.form['password'],
            profile_URL=url,
        )
        db.session.add(user)
        db.session.commit()
        login_user(user)
        return user.to_dict()
    return {'errors': validation_errors_to_error_messages(form.errors)}
예제 #7
0
def upload_image():
    if "image" not in request.files:
        return {"errors": "image required"}, 400

    image = request.files["image"]

    if not allowed_file(image.filename):
        return {"errors": "file type not permitted"}, 400

    image.filename = get_unique_filename(image.filename)

    upload = upload_file_to_s3(image)

    if "url" not in upload:
        # if the dictionary doesn't have a url key
        # it means that there was an error when we tried to upload
        # so we send back that error message
        return upload, 400

    url = upload["url"]
    # flask_login allows us to get the current user from the request
    remove_image = delete(UserImage).where(
        UserImage.user_id == current_user.id).execution_options(
            synchronize_session="fetch")
    db.session.execute(remove_image)
    db.session.commit()
    new_image = UserImage(user_id=current_user.id, img_url=url)
    db.session.add(new_image)
    db.session.commit()
    return {"url": url}
예제 #8
0
def add_server():
    url = None
    if "image" in request.files:
        image = request.files["image"]
        image.filename = get_unique_filename(image.filename)
        upload = upload_file_to_s3(image)
        url = upload["url"]

    # print(upload)
    new_server = Server(
        admin_id=request.form['admin_id'],
        name=request.form['name'],
        description=request.form['description'],
        category=request.form['serverCategory'],
        public=(bool(request.form['isPublic'])),
        image_url=url,
    )

    user = User.query.get(request.form['admin_id'])
    user.servers.append(new_server)
    db.session.add(new_server)
    db.session.commit()
    data = new_server.to_dict()
    data['channels'] = []
    return data
예제 #9
0
def add_activity():
    url = ''
    if "image" in request.files:
        image = request.files["image"]
        if not allowed_file(image.filename):
            return {"errors": "file type not permitted"}, 400
        image.filename = get_unique_filename(image.filename)

        upload = upload_file_to_s3(image)

        if "url" not in upload:
            # if the dictionary doesn't have a url key
            # it means that there was an error when we tried to upload
            # so we send back that error message
            return upload, 400
        url = upload["url"]
    form = NewActivityForm(request.form)
    form['csrf_token'].data = request.cookies['csrf_token']
    if form.validate():
        actDate = datetime.datetime.strptime(request.form.get("date"),
                                             '%m/%d/%Y, %I:%M:%S %p')
        print(actDate)
        newActivity = DogActivity(dog_id=form.data["dog_id"],
                                  name=form.data['name'],
                                  activityType_id=form.data["activityType_id"],
                                  activity_img=url,
                                  minutes=form.data["minutes"],
                                  route_id=form.data["route_id"],
                                  date=request.form.get("date"))
        db.session.add(newActivity)
        db.session.commit()
        return newActivity.to_dict()
    return {"errors": validation_errors_to_error_messages(form.errors)}, 401
예제 #10
0
def upload_image():
    if "image" not in request.files:
        return {"errors": "image required"}, 400

    image = request.files["image"]

    if not allowed_file(image.filename):
        return {"errors": "file type not permitted"}, 400

    image.filename = get_unique_filename(image.filename)

    upload = upload_file_to_s3(image)

    if "url" not in upload:
        # if the dictionary doesn't have a filename key
        # it means that there was an error when we tried to upload
        # so we send back that error message
        return upload, 400

    url = upload["url"]
    # we can use the
    new_image = Image(user=current_user, url=url)
    db.session.add(new_image)
    db.session.commit()
    return {"url": url}
예제 #11
0
def edit_dog(dog_id):
    dog = Dog.query.filter(Dog.id == dog_id).first()
    if 'image' in request.files:
        image = request.files["image"]

        if not allowed_file(image.filename):
            return {"errors": "file type not permitted"}, 400

        image.filename = get_unique_filename(image.filename)

        upload = upload_file_to_s3(image)

        if "url" not in upload:
            # if the dictionary doesn't have a url key
            # it means that there was an error when we tried to upload
            # so we send back that error message
            return upload, 400
        dog.dog_img = url
    if 'daily_goal' in request.form:
        dog.daily_goal = request.form['daily_goal']
    if "weight" in request.form:
        dog.weight = request.form['weight']
    if "description" in request.form:
        dog.description = request.form['description']
    db.session.commit()
    return {"dog": dog.to_dict()}
예제 #12
0
def add_song():
    url_image = None
    url_song = None
    if "image" in request.files:
        image = request.files["image"]
        image.filename = get_unique_filename(image.filename)
        upload = upload_file_to_s3(image)
        url_image = upload["url"]
    if "audio" in request.files:
        song_file = request.files["audio"]
        # content = request.files["audio"].read()
        song_file.filename = get_unique_filename(song_file.filename)
        upload = upload_file_to_s3(song_file)
        url_song = upload["url"]
        print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
        print(url_song)
        # Convert song file to binary
        # audio_binary = convertToBinaryData(content)
        # print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
        # print(audio_binary)
        # Convert audio file into Numpy array
        # AudioNumpyArray = read(song_file, normalized=False)
        # numpyData = {"array": AudioNumpyArray}

        # # Serialization
        # numpyData = {"array": AudioNumpyArray}
        # # use dump() to write array into file
        # encodedNumpyData = json.dumps(numpyData, cls=NumpyArrayEncoder)
    form = UploadForm()
    form['csrf_token'].data = request.cookies['csrf_token']
    new_song = Song(
        user_id=request.form['id'],
        title=request.form['title'],
        description=request.form['description'],
        image_url=url_image,
        audio_file=url_song,
        artist=request.form['artist'],
        genre_id=1,
    )

    db.session.add(new_song)
    db.session.commit()
    data = new_song.to_dict()
    return data
예제 #13
0
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
예제 #14
0
def edit_user():
    """
    Creates a new user and logs them in
    """
    user = request.form['id']
    matched_user = User.query.get(user)
    if "image" in request.files:
        image = request.files["image"]
        image.filename = get_unique_filename(image.filename)
        upload = upload_file_to_s3(image)
        url = upload["url"]
    else:
        url = None
    matched_user.profile_URL = url
    db.session.commit()
    return matched_user.to_dict()
예제 #15
0
def upload_file():
    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)

    if "url" not in upload:
        return upload, 400

    url = upload["url"]
    return {"url": url}
예제 #16
0
def profile_pic_submit(user_id):
    form = ProfPicForm()
    file = request.files.get("profile_photo_file")
    print("this is to see what file is", file)
    form['csrf_token'].data = request.cookies['csrf_token']

    if form.validate_on_submit():
        file = form.data['profile_photo_file']
        if file:
            file.filename = secure_filename(file.filename)
            s3_pic_url = upload_file_to_s3(file)

        profpic = Profpic.query.filter(Profpic.user_id == user_id).first()
        if profpic:
            profpic.pic_url = s3_pic_url['url']
        else:
            profpic = Profpic(pic_url=s3_pic_url['url'], user_id=user_id)
            db.session.add(profpic)
        db.session.commit()
        return profpic.to_dict()
예제 #17
0
def upload_image():

    if "image" not in request.files:
        return {"errors": "image required"}, 400

    image = request.files["image"]

    if not allowed_file(image.filename):
        return {"errors": "file type not permitted"}, 400

    image.filename = get_unique_filename(image.filename)

    upload = upload_file_to_s3(image)

    if "url" not in upload:
        # if the dictionary doesn't have a url key
        # it means that there was an error when we tried to upload
        # so we send back that error message
        return upload, 400

    url = upload["url"]
    name = request.form['name']
    birthday = request.form['birthday']
    weight = int(request.form['weight'])
    description = request.form["description"]
    breed_id = int(request.form['breed_id'])
    # flask_login allows us to get the current user from the request
    new_dog = Dog(user_id=current_user.id,
                  dog_img=url,
                  name=name,
                  breed_id=breed_id,
                  birthday=birthday,
                  weight=weight,
                  description=description)
    db.session.add(new_dog)
    db.session.commit()
    return {"url": url}
예제 #18
0
def edit_server():

    matched_server = Server.query.get(request.form['id'])
    url = None
    if "image" in request.files:
        image = request.files["image"]
        image.filename = get_unique_filename(image.filename)
        upload = upload_file_to_s3(image)
        url = upload["url"]

    matched_server.name = request.form['name']
    matched_server.description = request.form['description']
    matched_server.public = bool(request.form['isPublic'])
    matched_server.image_url = url
    matched_server.category = request.form['serverCategory']
    db.session.commit()

    formattedChannels = [
        channel.to_dict() for channel in matched_server.channels
    ]
    data = matched_server.to_dict()
    data['channels'] = formattedChannels

    return data
예제 #19
0
def add_activity_image(activity_id):
    if "image" not in request.files:
        return {"errors": "image required"}, 400

    image = request.files["image"]

    if not allowed_file(image.filename):
        return {"errors": "file type not permitted"}, 400
    image.filename = get_unique_filename(image.filename)

    upload = upload_file_to_s3(image)

    if "url" not in upload:
        # if the dictionary doesn't have a url key
        # it means that there was an error when we tried to upload
        # so we send back that error message
        return upload, 400

    url = upload["url"]
    updatedActivity = DogActivity.query.filter(
        DogActivity.id == activity_id).first()
    updatedActivity.activity_img = url
    db.session.commit()
    return updatedActivity.to_dict()
예제 #20
0
def create_character():

    form = CharacterForm()
    form['csrf_token'].data = request.cookies['csrf_token']
    # if form.validate_on_submit():
    if form.validate_on_submit():
        #  s3 image helper functions. Steps: test if image is in files,
        #  grab image, check if it is required type,
        #  give it a unique name so aws does not overwrite,
        #  then upload to aws, returning any errors if upload fails.

        if "image" not in request.files:
            return {"errors": ["image required"]}
        image = request.files["image"]
        if not allowed_file(image.filename):
            return {"errors": ["file type not permitted"]}
        image.filename = get_unique_filename(image.filename)
        upload = upload_file_to_s3(image)
        if "url" not in upload:
            return {"errors": [upload['errors']]}
        url = upload["url"]
        #  create a new instance of the character class
        character = Character()
        # populate character instance with data from form & aws url
        character = Character(userId=form.data['userId'],
                              name=form.data['name'],
                              level=form.data['level'],
                              race=form.data['race'],
                              characterClass=form.data['characterClass'],
                              subclass=form.data['subclass'],
                              hitpoints=form.data['hitpoints'],
                              speed=form.data['speed'],
                              imgURL=url,
                              proficiencies=form.data['proficiencies'],
                              background=form.data['background'],
                              alignment=form.data['alignment'],
                              attributes=form.data['attributes'],
                              traits=form.data['traits'],
                              ideals=form.data['ideals'],
                              bonds=form.data['bonds'],
                              flaws=form.data['flaws'],
                              inventory=form.data['inventory'],
                              description=form.data['description'],
                              languages=form.data['languages'],
                              tools=form.data['tools'])
        # Take care of tag creation
        #  grab tags and query to check if they are created already
        if len(form.data['tags']) > 0:
            tagsFormatted = [
                tag.strip() for tag in form.data['tags'].split(",")
            ]
            for tag in tagsFormatted:
                queriedTag = Tag.query.filter(Tag.name == tag).first()
                if (queriedTag):
                    character.tags.append(queriedTag)
                else:
                    tag = Tag(name=tag)
                    character.tags.append(tag)
        classTag = Tag.query.filter(
            Tag.name == form.data['characterClass']).first()
        raceTag = Tag.query.filter(Tag.name == form.data['race']).first()

        character.tags.append(classTag)
        character.tags.append(raceTag)
        # Take care of abilites and ability appending
        for feature in json.loads(form.data['features']):
            feature_to_add = (Ability.query.filter(
                Ability.name == feature['name']).first())
            if (feature_to_add):
                character.abilities.append(feature_to_add)
            else:
                return {"errors": "Failed to add ability"}

        # add and commit character
        db.session.add(character)
        db.session.commit()
        return character.to_dict()
    return {'errors': validation_errors_to_error_messages(form.errors)}