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))
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')
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')
def genres(self): return Genre.objects().limit(50)