def create_venue_submission(): form = VenueForm() if form.validate_on_submit(): try: venue = Venue() venue.name = form.name.data venue.city_id = get_city_id(form.city.data, form.state.data) venue.address = form.address.data venue.facebook_link = form.facebook.data venue.image_link = form.image.data venue.phone = form.phone.data venue.seeking_talent = form.isSeeking.data venue.seeking_description = form.seekingDescription.data venue.genres = form.genres.data db.session.add(venue) db.session.commit() flash('Venue ' + venue.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('venues')) return render_template('forms/new_venue.html', form=form)
def create_venue_submission(): # # 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 = VenueForm(request.form, meta={'csrf': False}) if form.validate(): try: form_venue = request.form #city city_name = form_venue['city'] state_name = form_venue['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_venue = Venue( name=form_venue['name'], address=form_venue['address'], phone=form_venue['phone'], website=form_venue['website'], facebook_link=form_venue['facebook_link'], seeking_description=form_venue['seeking_description'], image_link=form_venue['image_link']) if 'seeking_talent' not in form_venue: new_venue.seeking_talent = False else: new_venue.seeking_talent = True new_venue.city_id = city_id genres = Genre.query.filter( Genre.name.in_(form_venue.getlist('genres'))).all() for genre in genres: new_venue.genres.append(genre) #create db.session.add(new_venue) db.session.commit() #on successful db insert, flash success flash('Venue ' + form_venue['name'] + ' was successfully listed!') except: db.session.rollback() print(sys.exc_info()) flash('An error occurred. Venue ' + form_venue['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 Venue 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. Venue ' + data.name + ' could not be listed.') # see: http://flask.pocoo.org/docs/1.0/patterns/flashing/ return render_template('pages/home.html')