def create_artist_submission(): form = ArtistForm() if form.validate_on_submit(): try: artist = Artist() artist.name = form.name.data artist.city_id = get_city_id(form.city.data, form.state.data) artist.phone = form.phone.data artist.image_link = form.image.data artist.facebook_link = form.facebook.data artist.website = form.website.data artist.seeking_venue = form.isSeeking.data artist.seeking_description = form.seekingDesc.data artist.genres = form.genres.data db.session.add(artist) db.session.commit() flash('Artist ' + artist.name + ' was successfully listed!') except Exception as e: flash('An error occurred: ' + str(e)) db.session.rollback() finally: db.session.close() return redirect(url_for('artists')) return render_template('forms/new_artist.html', form=form)
def create_artist_submission(): # called upon submitting the new artist listing form # V TODO: insert form data as a new Venue record in the db, instead # V TODO: modify data to be the data object returned from db insertion form = ArtistForm(request.form, meta={'csrf': False}) if form.validate(): try: form_artist = request.form #city city_name = form_artist['city'] state_name = form_artist['state'] city_from_db = City.query.join(State).filter( City.name == city_name, State.name == state_name).all() if len(city_from_db) > 0: city_id = city_from_db[0].id else: state = State.query.filter_by(name=state_name).all()[0] new_city = City(name=city_name, state=state) db.session.add(new_city) db.session.commit() city_id = new_city.id #data new_artist = Artist( name=form_artist['name'], phone=form_artist['phone'], website=form_artist['website'], facebook_link=form_artist['facebook_link'], seeking_description=form_artist['seeking_description'], image_link=form_artist['image_link']) if 'seeking_venue' not in form_artist: new_artist.seeking_venue = False else: new_artist.seeking_venue = True new_artist.city_id = city_id genres = Genre.query.filter( Genre.name.in_(form_artist.getlist('genres'))).all() for genre in genres: new_artist.genres.append(genre) db.session.add(new_artist) db.session.commit() # on successful db insert, flash success flash('Artist ' + form_artist['name'] + ' was successfully listed!') except: db.session.rollback() print(sys.exc_info()) flash('An error occurred. Artist ' + form_artist['name'] + ' could not be listed.') finally: db.session.close() else: message = [] for field, err in form.errors.items(): message.append(field + ' ' + '|'.join(err)) flash('The Artist data is not valid. Please try again! Errors: ' + str(message)) #V TODO: on unsuccessful db insert, flash an error instead. # e.g., flash('An error occurred. Artist ' + data.name + ' could not be listed.') return render_template('pages/home.html')