def edit_venue(venue_id): vn = Venue.query.get(venue_id) venue = { "id": vn.id, "name": vn.name, "address": vn.address, "city": vn.city, "state": vn.state, "phone": vn.phone, "website": vn.website, "facebook_link": vn.facebook_link, "seeking_talent": vn.seeking_talent, "seeking_description": vn.seeking_description, "image_link": vn.image_link, "genres": [g.id for g in vn.genres] } form = VenueForm(**venue) error_msg = '' form.validate() for key, val in form.errors.items(): if key != 'csrf_token': error_msg += key + ": " + ';'.join(val) if error_msg: flash( 'There are few errors in the old venue info. Please fix them first! ' + error_msg) return render_template('forms/edit_venue.html', form=form, venue=venue)
def edit_venue_submission(venue_id): # TODO: take values from the form submitted, and update existing # venue record with ID <venue_id> using the new attributes form = VenueForm(request.form) try: form.validate() venue = Venue.query.filter(Venue.id == venue_id).first() venue.name = form.name.data venue.city = form.city.data venue.state = form.state.data.name venue.address = form.address.data venue.genres = [genre.name for genre in form.genres.data] venue.phone = form.phone.data venue.image_link = form.image_link.data venue.facebook_link = form.facebook_link.data venue.website = form.website.data venue.seeking_talent = form.seeking_talent.data venue.seeking_description = form.seeking_description.data db.session.commit() except Exception as e: print(e) db.session.rollback() finally: db.session.close() return redirect(url_for('show_venue', venue_id=venue_id))
def create_venue_submission(): form = VenueForm(request.form) if form.validate(): try: venue = Venue() form.populate_obj(venue) db.session.add(venue) db.session.commit() flash('Venue ' + request.form['name'] + ' was successfully listed!') except ValueError as e: flash('An error occurred. Venue ' + request.form['name'] + ' could not be listed.') db.session.rollback() print(e) finally: db.session.close() else: #Get validation messages message = [] for field, err in form.errors.items(): message.append(field + '' + '|'.join(err)) flash('Errors ' + str(message)) return render_template('pages/home.html')
def create_venue_submission(): # TODO: insert form data as a new Venue record in the db, instead # TODO: modify data to be the data object returned from db insertion # 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/ form = VenueForm(request.form, meta = {'csrf': False}) if form.validate(): try: venue = Venue() form.populate_obj(venue) db.session.add(venue) db.session.commit() flash('Venue ' + request.form['name'] + ' was successfully listed!') except ValueError as e: print(e) flash('Error in listing venue. Please try again.') db.session.rollback() finally: db.session.close() else: err_msg = [] for field, err in form.errors.items(): err_msg.append(field + '-' + '|'.join(err)) flash('Errors: ' + str(err_msg)) return render_template('pages/home.html')
def create_venue_submission(): # validate form form = VenueForm(request.form) if not form.validate(): return render_template('forms/new_venue.html', form=form) # create venue error = False try: venue = Venue() venue.set_data(form_data=request.form) db.session.add(venue) db.session.commit() except: error = True db.session.rollback() print(sys.exc_info()) finally: db.session.close() if error: flash('An error occurred. Venue ' + request.form.get('name', '') + ' could not be listed.') else: flash('Venue ' + request.form.get('name', '') + ' was successfully listed!') return render_template('pages/home.html')
def create_venue_submission(): error = False form = VenueForm() # Form validation if not form.validate(): for fieldName, errorMessages in form.errors.items(): show_form_errors(fieldName, errorMessages) return redirect(url_for('create_venue_form')) # Get data name = request.form['name'] city = request.form['city'] state = request.form['state'] address = request.form['address'] phone = request.form['phone'] genres = request.form.getlist('genres') image_link = request.form['image_link'] facebook_link = request.form['facebook_link'] website = request.form['website'] seeking_talent = True if 'seeking_talent' in request.form else False seeking_description = request.form['seeking_description'] try: # Create model venue = Venue( name=name, city=city, state=state, address=address, phone=phone, genres=genres, image_link=image_link, facebook_link=facebook_link, website=website, seeking_talent=seeking_talent, seeking_description=seeking_description, ) # Update DB db.session.add(venue) db.session.commit() except Exception: error = True db.session.rollback() print(sys.exc_info()) finally: db.session.close() # Show banner if error: abort(400) flash('An error occurred. Venue ' + name + ' could not be listed.', 'danger') if not error: flash('Venue ' + name + ' was successfully listed!', 'success') return render_template('pages/home.html')
def edit_venue(venue_id): venue = Venue.query.get(venue_id) form = VenueForm(obj=venue) if form.validate(): form.populate_obj(venue) # TODO: populate form with values from venue with ID <venue_id> return render_template("forms/edit_venue.html", form=form, venue=venue)
def edit_venue_submission(venue_id): # LASTXX: take values from the form submitted, and update existing # venue record with ID <venue_id> using the new attributes form = VenueForm() name = form.name.data city = form.city.data state = form.state.data address = form.address.data phone = form.phone.data genres = form.genres.data facebook_link = form.facebook_link.data image_link = form.image_link.data web_site = form.web_site.data seeking_talent = True if form.seeking_talent.data == 'Yes' else False seeking_description = form.seeking_description.data if not form.validate(): flash(form.errors) return redirect(url_for('edit_venue_submission', venue_id=venue_id)) else: error_in_update = False try: venue = Venue.query.get(venue_id) venue.name = name venue.city = city venue.state = state venue.address = address venue.phone = phone venue.seeking_talent = seeking_talent venue.seeking_description = seeking_description venue.image_link = image_link venue.web_site = web_site venue.facebook_link = facebook_link venue.genres = [] for genre in genres: venue.genres.append(genre) db.session.commit() except Exception: error_in_update = True print(f'Exception "{Exception}" in edit_venue_submission()') db.session.rollback() finally: db.session.close() if not error_in_update: # on successful db update, flash success flash('Venue ' + request.form['name'] + ' was successfully updated!') return redirect(url_for('show_venue', venue_id=venue_id)) else: flash('An error occurred. Venue ' + name + ' could not be updated.') print("Error in edit_venue_submission()") return render_template('errors/500.html')
def create_venue_submission(): """Creates a new venue in the db from a form submission. Returns: The template for a list of all venues """ form = VenueForm() if not form.validate(): flash( list(form.errors.values())[0][0], "error", ) return redirect(url_for("create_venue_form")) error = False try: venue_name = request.form.get("name") city = request.form.get("city") state = request.form.get("state") venue = Venue( name=venue_name, genres=get_genres(request.form.getlist("genres")), address=request.form.get("address"), area_id=get_area_id(city, state), phone=request.form.get("phone"), website=request.form.get("website"), facebook_link=request.form.get("facebook_link"), seeking_talent=bool(request.form.get("seeking_talent")), seeking_description=request.form.get("seeking_description"), image_link=request.form.get("image_link"), ) db.session.add(venue) db.session.commit() venue_id = venue.id except Exception: # pylint: disable=broad-except error = True db.session.rollback() print(sys.exc_info()) finally: db.session.close() if error: flash(f"Venue {venue_name} was unable to be listed!", "error") abort(500) flash(f"Venue {venue_name} was successfully listed!") return redirect(url_for("show_venue", venue_id=venue_id))
def create_venue_submission(): error_msg = '' try: f = request.form vf = VenueForm(f) if not vf.validate(): for key, val in vf.errors.items(): error_msg += key + ": " + ';'.join(val) + "\n" assert vf.validate() g_ids = [int(i) for i in f.getlist('genres')] vn = Venue( name=f['name'], city=f['city'], state=f['state'], address=f['address'], phone=f['phone'], facebook_link=f['facebook_link'], genres=db.session.query(Genre).filter(Genre.id.in_(g_ids)).all(), image_link=f['image_link'], website=f['website'], seeking_talent=('seeking_talent' in f), seeking_description=f['seeking_description'], ) db.session.add(vn) db.session.commit() flash('Venue ' + request.form['name'] + ' was successfully listed!') except AssertionError: db.session.rollback() print(sys.exc_info()) flash('The form is invalid.' + error_msg) except SQLAlchemyError: db.session.rollback() print(sys.exc_info()) flash('A database error occurred. Venue ' + request.form['name'] + ' could not be listed.') finally: db.session.close() return render_template('pages/home.html')
def edit_venue_submission(venue_id): error_msg = '' try: f = request.form rf = VenueForm(request.form) if not rf.validate(): for key, val in rf.errors.items(): error_msg += key + ": " + ';'.join(val) assert rf.validate() vn = Venue.query.get(venue_id) vn.name = f["name"] vn.city = f["city"] vn.state = f["state"] vn.address = f["address"] vn.phone = f["phone"] vn.image_link = f["image_link"] vn.facebook_link = f["facebook_link"] g_ids = [int(i) for i in f.getlist('genres')] vn.website = f['website'] vn.seeking_talent = "seeking_talent" in f vn.seeking_description = f["seeking_description"] vn.genres = db.session.query(Genre).filter(Genre.id.in_(g_ids)).all() db.session.commit() flash('Venue ' + request.form['name'] + ' was successfully updated!') except AssertionError: db.session.rollback() print(sys.exc_info()) flash('The form is invalid.' + error_msg) except SQLAlchemyError: db.session.rollback() print(sys.exc_info()) flash('A database error occurred. This venue could not be updated.') finally: db.session.close() return redirect(url_for('rt.show_venue', venue_id=venue_id))
def create_venue_submission(): # TODO: insert form data as a new Venue record in the db, instead # TODO: modify data to be the data object returned from db insertion form = VenueForm(request.form) try: form.validate() venue = Venue() form.populate_obj(venue) db.session.add(venue) db.session.commit() # on successful db insert, flash success flash('Venue ' + venue + ' was successfully listed!') except Exception as e: # 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/ db.session.rollback() flash('An error occurred. Venue ' + form.name.data + ' could not be listed.') finally: db.session.close() return render_template('pages/home.html')
def edit_venue_submission(venue_id): """Updates an existing venue in the db from a form submission. Args: venue_id: A str representing the id of the venue to update Returns: The template for the venue's detail page """ form = VenueForm() if not form.validate(): flash( list(form.errors.values())[0][0], "error", ) return redirect(url_for("edit_venue_form", venue_id=venue_id)) error = False try: venue_name = request.form.get("name") city = request.form.get("city") state = request.form.get("state") venue = Venue.query.get(venue_id) venue.name = venue_name venue.genres = get_genres(request.form.getlist("genres")) venue.address = request.form.get("address") venue.area_id = get_area_id(city, state) venue.phone = request.form.get("phone") venue.website = request.form.get("website") venue.facebook_link = request.form.get("facebook_link") venue.seeking_talent = bool(request.form.get("seeking_talent")) venue.seeking_description = request.form.get("seeking_description") venue.image_link = request.form.get("image_link") db.session.commit() except Exception: # pylint: disable=broad-except error = True db.session.rollback() print(sys.exc_info()) finally: db.session.close() if error: flash(f"Venue {venue_name} was unable to be updated!", "error") abort(500) flash(f"Venue {venue_name} was successfully updated!") return redirect(url_for("show_venue", venue_id=venue_id))
def edit_venue_submission(venue_id): # validate form form = VenueForm(request.form) if not form.validate(): venue = Venue.query.get(venue_id) return render_template('forms/edit_venue.html', form=form, venue=venue) # edit venue try: venue = Venue.query.get(venue_id) venue.set_data(form_data=request.form) db.session.commit() except: db.session.rollback() print(sys.exc_info()) finally: db.session.close() return redirect(url_for('show_venue', venue_id=venue_id))
def create_venue_submission(): """ Creates a database entry for a new Venue, the details of which are Posted """ form = VenueForm() if form.validate(): name = form.name.data city = form.city.data state = form.state.data address = form.address.data phone = form.phone.data image_link = form.image_link.data genres = form.genres.data website_link = form.website_link.data facebook_link = form.facebook_link.data date_added = datetime.datetime.utcnow() try: venue = Venue(name=name, city=city, state=state, address=address, phone=phone, image_link=image_link, genres=genres, website_link=website_link, facebook_link=facebook_link, date_added=date_added) db.session.add(venue) db.session.commit() flash('Venue ' + form.name.data + ' was successfully listed!') # TODO: insert form data as a new Venue record in the db, instead # TODO: modify data to be the data object returned from db insertion except Exception: db.session.rollback() flash('ERROR: Venue not added') finally: db.session.close() else: flash('ERROR: Venue not added, please check errors below:') return render_template('forms/new_venue.html', form=form) # 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 redirect(url_for('index'))
def create_venue_submission(): form = VenueForm() if not form.validate(): flash(form.errors) return redirect(url_for("create_venue_form")) error = False try: data = request.form venue = _hydrate_venue(data) db.session.add(venue) db.session.commit() except Exception: error = True db.session.rollback() print(sys.exc_info()) finally: db.session.close() if error: flash("An error occured. Venue " + data["name"] + "could not be listed.") else: flash("Venue " + data["name"] + "was successfully listed!") return render_template("pages/home.html")
def edit_venue_submission(venue_id): # TODO: take values from the form submitted, and update existing # venue record with ID <venue_id> using the new attributes form = VenueForm(request.form, meta = {'csrf': False}) if form.validate(): try: venue = Venue.query.get_or_404(venue_id) form.populate_obj(venue) db.session.add(venue) db.session.commit() flash('Venue update success!') except ValueError as e: print(e) flash('Error in updating venue. Please try again.') db.session.rollback() finally: db.session.close() else: err_msg = [] for field, err in form.errors.items(): err_msg.append(field + '-' + '|'.join(err)) flash('Errors: ' + str(err_msg)) return redirect(url_for('show_venue', venue_id=venue_id))