Пример #1
0
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)
Пример #2
0
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))
Пример #3
0
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')
Пример #4
0
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')
Пример #5
0
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')
Пример #6
0
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')
Пример #7
0
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)
Пример #8
0
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')
Пример #9
0
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))
Пример #10
0
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')
Пример #11
0
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))
Пример #12
0
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')
Пример #13
0
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))
Пример #14
0
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))
Пример #15
0
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'))
Пример #16
0
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")
Пример #17
0
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))