def edit_venue_submission(venue_id): form = VenueForm(request.form) errors = None if form.validate(): try: venue = Venue.query.get_or_404(venue_id) form.populate_obj(venue) db.session.add(venue) db.session.commit() flash(f"Venue {venue.name} was successfully updated!") except IntegrityError as exec: logger.error(exec) db.session.rollback() errors = True finally: db.session.close() if form.errors or errors: if form.errors: flash_error(parse_errors(form.errors)) else: venue_name = request.form.get("name", "") flash_error( f"An error occurred. Venue {venue_name} could not be listed") return render_template("forms/edit_venue.html", form=form, venue=venue) return redirect(url_for("venues.venues_detail", venue_id=venue_id))
def edit_venue_submission(venue_id): error = False venue = Venue.query.get(venue_id) form = VenueForm() form.genres.choices = [(g.id, g.name) for g in Genre.query.all()] if form.validate_on_submit(): try: venue.name = request.form['name'] venue.city = request.form['city'] venue.state = request.form['state'] venue.address = request.form['address'] venue.phone = request.form['phone'] venue.image_link = request.form['image_link'] venue.website = request.form['website_link'] venue.facebook_link = request.form['facebook_link'] venue.seeking_talent = True if 'seeking_talent' in request.form else False venue.seeking_description = request.form['seeking_description'] venue.genres.clear() venue_genres = Genre.query.filter( Genre.id.in_([int(i) for i in request.form.getlist('genres')])).all() venue.genres.extend(venue_genres) db.session.commit() except: error = True db.session.rollback() finally: db.session.close() if error: flash('An error occurred. Venue ' + request.form['name'] + ' could not be updated, please try again.') return render_template('forms/edit_venue.html', form=form, venue=venue) else: flash('Venue ' + request.form['name'] + ' was successfully updated!') return redirect(url_for('show_venue', venue_id=venue_id)) # Errors on form input, render template again showing errors return render_template('forms/edit_venue.html', form=form, venue=venue)
def edit_venue(venue_id): venue = Venue.query.get(venue_id) if not venue: return render_template('errors/404.html') form = VenueForm() form.genres.choices = [(g.id, g.name) for g in Genre.query.all()] form.name.data = venue.name form.city.data = venue.city form.state.data = venue.state form.phone.data = venue.phone form.address.data = venue.address form.genres.data = [genre.id for genre in venue.genres] form.facebook_link.data = venue.facebook_link form.image_link.data = venue.image_link form.website_link.data = venue.website form.seeking_talent.data = venue.seeking_talent form.seeking_description.data = venue.seeking_description return render_template('forms/edit_venue.html', form=form, venue=venue)
def edit_venue(venue_id): venue_to_edit = Venue.query.get(venue_id) # pre-populate the form with already existing venue data if request.method == "GET": # populate form with values from venue with ID <venue_id> form = VenueForm(obj=venue_to_edit) return render_template('forms/edit_venue.html', form=form, venue=venue_to_edit) # submission was made to edit venue elif request.method == "POST": try: updated_venue_dict = request.form.to_dict() # get list of genres updated_venue_dict["genres"] = request.form.getlist('genres') # convert to boolean -- if not checked key won't exist updated_venue_dict["seeking_talent"] = updated_venue_dict.get( "seeking_talent") == "y" # remove empty string values updated_venue_dict = { k: v for k, v in updated_venue_dict.items() if v != '' } # update attributes of the venue object for key, value in updated_venue_dict.items(): setattr(venue_to_edit, key, value) # commit the updates db.session.commit() # on successful db insert, flash success flash('{} was successfully updated!'.format(venue_id)) return redirect(url_for('show_venue', venue_id=venue_id)) except Exception as e: db.session.rollback() # on unsuccessful db insert, flash an error instead. flash( "An error occurred while trying to update venue: {}".format(e), "error") finally: db.session.close() return render_template('pages/home.html')
def create_venue_form(): form = VenueForm() form.genres.choices = [(g.id, g.name) for g in Genre.query.all()] return render_template('forms/new_venue.html', form=form)
def create_venue_form(): form = VenueForm() return render_template('forms/new_venue.html', form=form)
def edit_venue(venue_id): venue = Venue.query.get_or_404(venue_id) form = VenueForm(obj=venue) return render_template("forms/edit_venue.html", form=form, venue=venue)
def create_venue_submission(): form = VenueForm(request.form) errors = None if not form.validate(): errors = parse_errors(form.errors) flash_error(errors) return render_template("forms/new_venue.html", form=form) try: # create City object city_name, state = form.city._fields["name"].data, form.city.state.data city_name = city_name.strip().capitalize() # get or create city = City.query.filter_by(name=city_name).one_or_none() if not city: city = City(name=city_name, state=state) db.session.add(city) # create Contact Information object contact_info = ContactInfo( phone=form.contact_info.phone.data, image_link=form.contact_info.image_link.data, website=form.contact_info.website.data, facebook_link=form.contact_info.facebook_link.data, ) db.session.add(contact_info) # finally create Venue object genres = form.genres.data address = form.address.data.strip() name = form.name.data.strip() venue = Venue( name=name, address=address, genres=genres, city=city, contact_info=contact_info, ) db.session.add(venue) db.session.commit() flash(f"Venue {name} was successfully listed!") except IntegrityError as exec: logger.error(exec) db.session.rollback() errors = True finally: db.session.close() if form.errors or errors: if form.errors: flash_error(parse_errors(form.errors)) else: venue_name = request.form.get("name", "") flash_error( f"An error occurred. Venue {venue_name} could not be listed") return render_template("forms/edit_venue.html", form=form) return redirect(url_for("index"))
def create_venue_form(): return render_template("forms/new_venue.html", form=VenueForm())