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 error = False form = VenueForm() venue = Venue.query.get(venue_id) if venue is None: abort(404) try: if form.validate_on_submit(): form.populate_obj(venue) venue.genres = ','.join(form.genres.data) db.session.commit() else: error = True for fieldName, errorMessages in form.errors.items(): for err in errorMessages: print(err, file=sys.stdout) except: error = True db.session.rollback() print(sys.exc_info()) finally: db.session.close() if error: flash('Error!') return render_template('forms/edit_venue.html', form=form, venue=venue) else: flash('Venue Id : ' + str(venue_id) + ' edited!') return redirect(url_for('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 # 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 edit_venue_submission(venue_id): venue = Venue.query.get(venue_id) if venue is None: abort(404) name = venue.name form = VenueForm() if not form.validate_on_submit(): flash('Invalid value found in ' + ', '.join(form.errors.keys()) + ' field(s).') return render_template('forms/edit_venue.html', form=form, venue=venue) else: error = False try: edited = Venue() form.populate_obj(edited) for col in Venue.__table__.columns.keys(): if col != 'id': setattr(venue, col, getattr(edited, col)) name = venue.name venue.phone = format_phone(venue.phone) db.session.commit() except: error = True db.session.rollback() finally: db.session.close() if error: flash('An error occurred. Venue ' + name + ' could not be updated.') return redirect(url_for('index')) else: flash('Venue ' + name + ' was successfully updated!') 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(): # insert form data as a new Venue record in the db, instead # modify data to be the data object returned from db insertion # see: http://flask.pocoo.org/docs/1.0/patterns/flashing/ form = VenueForm(request.form, meta={"csrf": False}) if form.validate_on_submit(): try: venue: Venue = Venue() form.populate_obj(venue) db.session.add(venue) db.session.commit() # on successful db insert, flash success flash(f"Venue {request.form['name']} was successfully listed!") except ValueError as e: print(sys.exc_info()) db.session.rollback() # on unsuccessful db insert, flash an error instead. flash(f"An error occurred: {str(e)}") finally: db.session.close() else: error_msg = [] for field, error in form.errors.items(): error_msg.append(f"{field}: {str(error)}") flash(f"Error occurred: {str(error_msg)}") return render_template('pages/home.html')
def create_venue_submission(): venue = Venue() form = VenueForm() if not form.validate_on_submit(): flash('Invalid value found in ' + ', '.join(form.errors.keys()) + ' field(s).') return render_template('forms/new_venue.html', form=form) else: error = False try: form.populate_obj(venue) venue.phone = format_phone(venue.phone) db.session.add(venue) db.session.flush() venue_id = venue.id db.session.commit() except: error = True db.session.rollback() finally: db.session.close() if error: flash('An error occurred. Venue ' + venue.name + ' could not be listed.') return redirect(url_for('index')) else: flash('Venue ' + request.form['name'] + ' was successfully listed!') return redirect(url_for('show_venue', venue_id=venue_id))
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): venue = Venue.query.get(venue_id) form = VenueForm(request.form) # maybe need obj=venue param? form.populate_obj(venue) db.session.add(venue) db.session.commit() flash("Venue " + request.form["name"] + " was successfully updated!") return redirect(url_for("show_venue", venue_id=venue_id))
def edit_venue_submission(venue_id): form = VenueForm(request.form) try: venue = Venue.query.get(venue_id) form.populate_obj(venue) db.session.commit() flash('Venue ' + request.form['name'] + ' was successfully edited!') except: db.session.rollback() flash('An error occurred. Venue ' + form['name'] + ' could not be edited.') finally: db.session.close() return redirect(url_for('show_venue', venue_id=venue_id))
def edit_venue_submission(venue_id): # take values from the form submitted, and update existing # venue record with ID <venue_id> using the new attributes form = VenueForm(request.form) try: data = request.form venue = db.session.query(Venue).get(venue_id) form.populate_obj(venue) db.session.commit() except: 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) try: venue = Venue() form.populate_obj(venue) db.session.add(venue) db.session.commit() flash('Venue ' + request.form['name'] + ' was successfully listed!') except: db.session.rollback() flash('An error occurred. Venue ' + form['name'] + ' could not be listed.') finally: db.session.close() 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 form = VenueForm(request.form) try: name = request.form['name'] city = request.form['city'] state = request.form['state'] address = request.form['address'] phone = request.form['phone'] facebook_link = request.form['facebook_link'] genres = request.form.getlist('genres') image_link = request.form['image_link'] website = request.form['website'] add_venue = Venue(name=name, city=city, state=state, address=address, phone=phone, genres=genres, facebook_link=facebook_link, website=website, image_link=image_link) form.populate_obj(add_venue) db.session.add(add_venue) db.session.commit() flash('Venue ' + add_venue.name + ' was successefully listed') except ValueError as e: print(e) db.session.rollback() traceback.print_exc() flash('An error occured! Venue ' + add_venue.name + ' could not be listed') finally: db.session.close() # 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')
def create_venue_submission(): error = False form = VenueForm(request.form) 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: error = True print(e) flash('An error occurred. Venue ' + request.form['name'] + ' could not be listed.') db.session.rollback() finally: db.session.close() if error: abort(400) else: return render_template('pages/home.html')
def edit_venue(venue_id): # it must be imported here to avoid circular import from forms import VenueForm venue: Venue = Venue.query.get_or_404(venue_id) form = VenueForm(obj=venue) # and I'm not adding request.form as it's already added by flask-wtf # look here https://flask-wtf.readthedocs.io/en/stable/quickstart.html ### # Note that you don't have to pass request.form to Flask-WTF; # it will load automatically. # And the convenience validate_on_submit will check if it is a POST request # and if it is valid. ### venue_name = venue.name # this function return true only if it's a POST request and it's valid form # and choices are validated automatically unless validate_choices = false if form.validate_on_submit(): form.populate_obj(venue) try: db.session.add(venue) db.session.commit() except SQLAlchemyError: print(sys.exc_info()) db.session.rollback() db.session.close() flash('An error occurred. Venue ' + venue_name + ' could not be edited.') return render_template('forms/edit_venue.html', form=form, venue_name=venue_name) flash('Venue ' + venue.name + ' was successfully updated!') return redirect(url_for('show_venue', venue_id=venue_id)) return render_template('forms/edit_venue.html', form=form, venue_name=venue_name)
def create_venue(): # it must be imported here to avoid circular import from forms import VenueForm form = VenueForm() if form.validate_on_submit(): venue = Venue() form.populate_obj(venue) try: db.session.add(venue) db.session.commit() except SQLAlchemyError: print(sys.exc_info()) db.session.rollback() db.session.close() flash('An error occurred. Venue ' + form.name.data + ' could not be listed.') return render_template('forms/new_venue.html', form=form) flash('Venue ' + venue.name + ' was successfully listed!') return redirect(url_for('show_venue', venue_id=venue.id)) return render_template('forms/new_venue.html', form=form)
def edit_venue_submission(venue_id): error = False venue = Venue.query.get(venue_id) form = VenueForm() try: if form.validate_on_submit(): form.populate_obj(venue) db.session.add(venue) db.session.commit() flash('Venue {} was successfully updated!'.format(form.name.data)) return redirect(url_for('show_venue', venue_id=venue_id)) flash('An error occurred. Venue {} could not be listed. {}'.format( form.name.data, form.errors)) except (): db.session.rollback() error = True print(sys.exc_info()) finally: db.session.close() if error: abort(500) flash('There was an error, please try again.') return redirect(url_for('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): # 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))