コード例 #1
0
def edit_artist(artist_name):
    artist = Artist.objects(name=artist_name).first_or_404()
    if current_user not in artist.members:
        flash('You are not authorized to edit {}\'s information'.format(
            artist.name))
        return redirect(url_for('main.artist', artist_name=artist.name))
    form = EditArtistForm()
    form.location.choices = [(location.id,
                              location.city + ', ' + location.state)
                             for location in Location.objects()]
    form.genre.choices = [(genre.id, genre.name)
                          for genre in Genre.objects.order_by('name')]
    if form.validate_on_submit():
        artist.name = form.name.data
        artist.description = form.description.data
        artist.location = Location.objects(id=form.location.data).first()
        artist.genre = [
            Genre.objects(id=genre).first() for genre in form.genre.data
        ]
        artist.save(cascade=True)
        flash('{} Edits Complete'.format(artist.name))
        return redirect(url_for('main.artist', artist_name=artist.name))
    elif request.method == 'GET':
        form.name.data = artist.name
        form.description.data = artist.description
        form.genre.data = [genre.id for genre in artist.genre]
        form.location.data = artist.location.id
    return render_template('edit_artist.html',
                           form=form,
                           title='Edit {}'.format(artist.name))
コード例 #2
0
def create_artist():
    form = CreateArtistForm()
    form.location.choices = [(location.id,
                              location.city + ', ' + location.state)
                             for location in Location.objects()]
    form.genre.choices = [(genre.id, genre.name)
                          for genre in Genre.objects.order_by('name')]
    if form.validate_on_submit():
        user = User.objects(username=current_user.username).first()
        location = Location.objects(id=form.location.data).first()
        genres = []
        for genre_id in form.genre.data:
            genres.append(Genre.objects(id=genre_id).first())
        artist = Artist(name=form.name.data,
                        description=form.description.data,
                        location=location,
                        genre=genres)
        artist.save(cascade=True)
        add_member(user, artist)
        flash('Artist {} was created'.format(artist.name))
        return redirect(url_for('main.artist', artist_name=artist.name))
    return render_template('create_artist.html',
                           form=form,
                           title='Create Artist')
コード例 #3
0
def upload_track(artist_name):
    artist = Artist.objects(name=artist_name).first_or_404()
    if current_user not in artist.members:
        flash('You are not authorized to upload tracks for {}'.format(
            artist.name))
        return redirect(url_for('main.artist', artist_name=artist.name))
    form = UploadTrackForm()
    form.genre.choices = [(genre.id, genre.name)
                          for genre in Genre.objects.order_by('name')]
    if form.validate_on_submit():
        file = form.track.data
        if not allowed_file(file.filename):
            flash('Only music files are allowed')
            return render_template('upload_track.html',
                                   form=form,
                                   artist=artist,
                                   title='Upload Track')
        file.filename = secure_filename(file.filename)
        s3_filepath, cloudfront_filepath = upload_file_to_s3(
            file, current_app.config['S3_BUCKET'])
        track_exists = Track.objects(s3_filepath=s3_filepath,
                                     cloudfront_filepath=cloudfront_filepath
                                     ).first() is not None  # 1 if track exists
        if s3_filepath is not None and cloudfront_filepath is not None and not track_exists:
            new_track = Track(track_name=form.track_name.data,
                              artist=artist,
                              duration=0,
                              genre=[
                                  Genre.objects(id=genre).first()
                                  for genre in form.genre.data
                              ],
                              s3_filepath=s3_filepath,
                              cloudfront_filepath=cloudfront_filepath)
            new_track.save(cascade=True)  # Saves the track in the mongoDB

            # filepath = os.path.join(current_app.config['UPLOAD_FOLDER'], file.filename)
            # new_track = Track(track_name=form.track_name.data, artist=artist, duration=0,
            #                   genre=[Genre.objects(id=genre).first() for genre in form.genre.data], filepath=filepath)
            # new_track.save(cascade=True)  # Saves the track in the mongoDB
            # file.save(filepath)
            artist.tracks.append(new_track)
            artist.save(cascade=True)  # Save artist with new track
            flash('Track successfully uploaded')
            return redirect(url_for('main.artist', artist_name=artist_name))
        else:
            if track_exists:
                flash('Track already exists!')
                return render_template('upload_track.html',
                                       form=form,
                                       artist=artist,
                                       title='Upload Track')
            else:
                flash('Error uploading file')
                return render_template('upload_track.html',
                                       form=form,
                                       artist=artist,
                                       title='Upload Track')
    return render_template('upload_track.html',
                           form=form,
                           artist=artist,
                           title='Upload Track')
コード例 #4
0
ファイル: forms.py プロジェクト: zSelimReborn/TopFlix
 def genres(self):
     return Genre.objects().limit(50)