Ejemplo n.º 1
0
Archivo: app.py Proyecto: adengz/fyyur
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))
Ejemplo n.º 2
0
Archivo: app.py Proyecto: jurayev/fyyur
def edit_venue_submission(venue_id):
    form = VenueForm()

    if form.validate_on_submit():
        data = request.form
        try:
            is_seeking_talent = True if data['seeking_description'].strip(
            ) else False
            venue = Venue.query.get(venue_id)
            venue.name = data['name']
            venue.city = data['city']
            venue.state = data['state']
            venue.address = data['address']
            venue.genres = request.form.getlist('genres')
            venue.phone = data['phone']
            venue.image_link = data['image_link']
            venue.facebook_link = data['facebook_link']
            venue.website = data['website']
            venue.seeking_talent = is_seeking_talent
            venue.seeking_description = data['seeking_description']
            db.session.commit()
            flash(f'Venue {data["name"]} was successfully edited!')
        except:
            db.session.rollback()
            flash(
                f'An error occurred. Venue {data["name"]} could not be edited.'
            )
        finally:
            db.session.close()
    # Flashing form validation errors
    for input, errors in form.errors.items():
        flash(f'Invalid value for "{input}". {"".join(errors)}')
    return redirect(url_for('show_venue', venue_id=venue_id))
Ejemplo n.º 3
0
Archivo: app.py Proyecto: jurayev/fyyur
def create_venue_submission():
    form = VenueForm()
    if form.validate_on_submit():
        data = request.form
        try:
            is_seeking_talent = True if data['seeking_description'].strip(
            ) else False
            venue = Venue(name=data['name'],
                          city=data['city'],
                          state=data['state'],
                          address=data['address'],
                          genres=request.form.getlist('genres'),
                          phone=data['phone'],
                          image_link=data['image_link'],
                          facebook_link=data['facebook_link'],
                          website=data['website'],
                          seeking_talent=is_seeking_talent,
                          seeking_description=data['seeking_description'])
            db.session.add(venue)
            db.session.commit()
            flash(f'Venue {data["name"]} was successfully listed!')
        except:
            db.session.rollback()
            flash(
                f'An error occurred. Venue {data["name"]} could not be listed.'
            )
        finally:
            db.session.close()
        return render_template('pages/home.html')
    # Flashing current errors
    for input, errors in form.errors.items():
        flash(f'Invalid value for "{input}". {"".join(errors)}')
    return render_template('forms/new_venue.html', form=form)
Ejemplo n.º 4
0
def edit_venue_submission(venue_id):
  form = VenueForm(request.form)
  # TODO: take values from the form submitted, and update existing
  if form.validate_on_submit():
    try:
      a = db.session.query(Venue).get(venue_id)
      a.name = form.name.data
      a.city = form.city.data
      a.state = form.state.data
      a.phone = form.phone.data
      a.address = form.address.data
      a.facebook_link = form.facebook_link.data
      a.genres = form.genres.data
      a.image_link = form.image_link.data
      a.website = form.website.data
      a.seeking_talent = bool(form.seeking_talent.data)
      a.seeking_description = form.seeking_description.data
      db.session.commit()
      flash('Venue ' + request.form['name'] + ' was successfully updated!')
    # TODO: on unsuccessful db insert, flash an error instead.
    except:
      flash('An error occurred. Venue ' + form.name.data + ' could not be updated.')
      db.session.rollback()
      print(sys.exc_info())
    finally:
      db.session.close()
    return redirect(url_for('show_venue', venue_id=venue_id))
  else:
    print(form.errors)
    return render_template('forms/edit_venue.html', form=form)
Ejemplo n.º 5
0
def create_venue_submission():
    form = VenueForm()
    if form.validate_on_submit():
        try:
            venue = Venue(
                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
                if form.image_link.data else None,
                facebook_link=form.facebook_link.data
                if form.facebook_link.data else None,
                genres=form.genres.data,
                website=form.website.data if form.website.data else None,
                seeking_talent=True
                if form.seeking_talent_description.data else False,
                seeking_description=form.seeking_talent_description.data
                if form.seeking_talent_description.data else None)
            db.session.add(venue)
            db.session.commit()
            flash('Venue ' + form.name.data + ' was successfully listed!')
            return render_template('pages/home.html')
        except Exception:
            db.session.rollback()
            print(sys.exc_info())
            flash('An error occurred. Venue ' + form.name.data +
                  ' could not be listed.')
            return render_template('pages/home.html')
        finally:
            db.session.close()
    else:
        return render_template('forms/new_venue.html', form=form)
Ejemplo n.º 6
0
def create_venue_submission():
    form = VenueForm()
    if form.validate_on_submit():
        try:
            venue = Venue()
            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.genres = request.form.getlist('genres')
            venue.facebook_link = request.form['facebook_link']
            venue.website = request.form['website']
            venue.seeking_talent = True if 'seeking_talent' in request.form else False
            venue.seeking_description = request.form['seeking_description']
            db.session.add(venue)
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            flash(
                'An error occurred. Venue {} Could not be listed!, {}'.format(
                    request.form['name'], str(e)))
        finally:
            db.session.close()
            flash('Venue {} was successfully listed!'.format(
                request.form['name']))
            return redirect(url_for('venues'))
    return render_template('forms/new_venue.html', form=form)
Ejemplo n.º 7
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
    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))
Ejemplo n.º 8
0
def edit_venue_submission(venue_id):
    try:
        request_data = {**request.form}
        request_data['genres'] = ','.join(request.form.getlist('genres') or [])
        request_data['seeking_talent'] = (request_data.get('seeking_talent')
                                          or '').lower() == 'y'

        form = VenueForm(**request_data)
        if not form.validate_on_submit():
            venue = Venue.query.filter_by(id=venue_id).first()
            return render_template('forms/edit_venue.html',
                                   form=form,
                                   venue=venue)

        request_data.pop('csrf_token', None)

        Venue.query.filter_by(id=venue_id).update(request_data)
        db.session.commit()
        flash('Venue ' + request.form['name'] + ' was successfully updated!')
    except:
        flash('Venue ' + request.form['name'] + ' was not updated!')
        db.session.rollback()
    finally:
        db.session.close()

    return redirect(url_for('show_venue', venue_id=venue_id))
Ejemplo n.º 9
0
def create_venue():
    """Either load the blank form or submit a filled form to create a new venue."""

    form = VenueForm(request.form)
    if request.method == 'POST':
        if form.validate_on_submit():
            venue = Venue(name=form.name.data,
                          genres=json.dumps(form.genres.data),
                          city=form.city.data,
                          state=form.state.data,
                          address=form.address.data,
                          phone=form.phone.data,
                          facebook_link=form.facebook_link.data,
                          website=form.website.data,
                          seeking_talent=form.seeking_talent.data,
                          seeking_description=form.seeking_description.data,
                          email=form.email.data)
            try:
                db.session.add(venue)
                db.session.commit()
                message = f'Venue {venue.name} was successfully listed!', 'info'
            except Exception as e:
                app.logger.error(e)
                db.session.rollback()
                message = f'An error occurred. Venue {venue.name} could not be listed.', 'danger'
            flash(*message)
            return redirect(url_for('index'))
        else:
            errors = form.errors
            for e in errors:
                flash(f'{e}: {errors[e][0]}', 'danger')
    return render_template('forms/new_venue.html', form=form)
Ejemplo n.º 10
0
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')
Ejemplo n.º 11
0
def create_venue_submission():
    error = False
    form = VenueForm()
    try:
        if form.validate_on_submit():
            venue = Venue(name=form.name.data,
                          city=form.city.data,
                          state=form.state.data,
                          address=form.address.data,
                          phone=form.phone.data,
                          image_link='',
                          facebook_link=form.facebook_link.data,
                          genres=form.genres.data,
                          website=form.website.data,
                          seeking_talent=form.seeking_talent.data,
                          seeking_description=form.seeking_description.data)
            db.session.add(venue)
            db.session.commit()
            flash('Venue {} was successfully listed!'.format(form.name.data))
            return redirect(url_for('index'))
        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 render_template('forms/new_venue.html')
Ejemplo n.º 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()
    name = form.name.data
    created = False
    if form.validate_on_submit():
        try:
            attrs = {attr: getattr(form, attr).data for attr in VENUE_SIMPLE_ATTRS}

            genres = ",".join(x for x in form.genres.data)
            new_venue = Venue(**attrs, genres=genres)
            db.session.add(new_venue)
            db.session.commit()
            # on successful db insert, flash success
            created = True
            flash("Venue " + name + " was successfully listed!")

        except:
            print(sys.exc_info())
        finally:
            db.session.close()

        if created:
            return redirect(url_for("index"))

    # TODO: on unsuccessful db insert, flash an error instead.
    # see: http://flask.pocoo.org/docs/1.0/patterns/flashing/
    flash("An error occurred. Venue " + name + " could not be listed.")
    return render_template("forms/new_venue.html", form=form)
def create_venue_submission():
    """ Submit callback for venue create form  """
    # Get the form data
    name = request.form['name']
    city = request.form['city']
    state = request.form['state']
    address = request.form['address']
    phone = request.form['phone']
    image_link = request.form['image_link']
    facebook_link = request.form['facebook_link']
    website = request.form['website']
    seeking_talent = request.form['seeking_talent'] == 'Yes'
    seeking_description = request.form['seeking_description']
    # genres is a list
    genres = request.form.getlist('genres')

    error = False
    form = VenueForm()
    # Validate form data
    if not form.validate_on_submit():
        flash(form.errors)
        # Redirect to the new_venue.html page with the error message in the above line
        return redirect(url_for('create_venue_submission'))

    try:
        # Create a venue instance using form data
        venue = Venue(
            name=name,
            city=city,
            state=state,
            address=address,
            phone=phone,
            image_link=image_link,
            facebook_link=facebook_link,
            website=website,
            seeking_talent=seeking_talent,
            seeking_description=seeking_description
        )
        db.session.add(venue)

        # Creating Venue generes instances and assigning using backref
        for genre in genres:
            new_genre = VenuesGenres(genre=genre)
            new_genre.venue = venue             # backref
            db.session.add(new_genre)

        db.session.commit()
    except Exception as err:
        print(err)
        db.session.rollback()
        error = True
    finally:
        db.session.close()

    if error:
        flash(f'An error occurred. Venue {name} could not be listed.')
        abort(500)

    flash(f'Venue {name} listed successfully')
    return render_template('pages/home.html')
Ejemplo n.º 14
0
Archivo: app.py Proyecto: adengz/fyyur
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))
Ejemplo n.º 15
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()
    if form.validate_on_submit():
        form = VenueForm()
        if bool(
                VenueLocation.query.filter_by(
                    city=request.form['city']).first()) == False:
            city = request.form['city']
            state = request.form['state']
            try:
                location = VenueLocation(state=state, city=city)
                db.session.add(location)
                db.session.commit()
            except:
                db.session.rollback()
                flash('Oops! incorrect city/state value. Venue ' +
                      request.form['name'] + ' could not be listed.')
            finally:
                db.session.close()
        try:
            name = request.form['name']
            genres = form.genres.data
            city = request.form['city']
            address = request.form['address']
            phone = request.form['phone']
            image_link = "https://i.ibb.co/31v1Gfq/no-image.png" if form.image_link.data == '' else request.form[
                'image_link']
            website = request.form['website']
            facebook_link = request.form['facebook_link']
            seeking_talent = True if form.seeking_talent.data == 'Yes' else False
            seeking_description = request.form['seeking_description']
            venue = Venue(name=name,
                          genres=genres,
                          city=city,
                          address=address,
                          phone=phone,
                          image_link=image_link,
                          website=website,
                          facebook_link=facebook_link,
                          seeking_talent=seeking_talent,
                          seeking_description=seeking_description)
            db.session.add(venue)
            db.session.commit()
            flash('Venue ' + request.form['name'] +
                  ' was successfully listed!')
        except:
            db.session.rollback()
            flash('Oops! An error ' + str(sys.exc_info()[0]) +
                  ' ocurred. Venue ' + request.form['name'] +
                  ' could not be listed.')
        finally:
            db.session.close()
        return render_template('pages/home.html')
    else:
        return render_template('forms/new_venue.html', form=form)
Ejemplo n.º 16
0
def addvenue():
    form = VenueForm()
    if form.validate_on_submit():
        add_venue('aditya166', str(form.venue_name.data), form.venue_open.data,
                  form.venue_close.data, str(form.zip_code.data),
                  str(form.city.data), str(form.address.data))
        flash(f'Venue has been successfully added', 'success')
        return redirect(url_for('about'))
    return render_template('addvenue.html', title='Add Venue', form=form)
Ejemplo n.º 17
0
def new_venue():
    """createVenue view."""
    form = VenueForm()
    if form.validate_on_submit():
        venue = models.Venue(postcode=form.postcode.data, city=form.city.data, name=form.name.data, description=form.description.data,
                             venueId=form.venueId.data, street=form.street.data, number=form.number.data, lat=form.lat.data, long=form.long.data, location = db.GeoPt(float(form.lat.data), float(form.long.data)))
        venue.update_location()
        venue = venue.put()
        flash('Venue saved.')
        return redirect(url_for('list_venues'))
    return render_template('create_venue.html', form=form)
Ejemplo n.º 18
0
Archivo: app.py Proyecto: flisz/FSND
def edit_venue_submission(venue_id):
    form = VenueForm(request.form)  # fix to get all selected values from form.
    data = request.form
    error = False
    print(json.dumps(data, indent=4))
    if form.validate_on_submit():
        # Get City info
        city_name = data.get('city')
        city_state = data.get('state', 'AL')
        city_id = City.get_id(city_state=city_state, city_name=city_name)
        if city_id is None:
            error = True

        # Get other fields
        name = data.get('name')
        address = data.get('address')
        phone = format_phone_number(data.get('phone'))
        image_link = data.get('image_link')
        genres = format_genres(data)
        facebook_link = data.get('facebook_link')
        website = data.get('website')
        seeking_talent = True if data.get('seeking_talent') else False
        seeking_description = data.get('seeking_description')

        try:
            venue = Venue.query.get(venue_id)
            venue.name = name
            venue.city_id = city_id
            venue.address = address
            venue.phone = phone
            venue.image_link = image_link
            venue.genres = genres
            venue.facebook_link = facebook_link
            venue.website = website
            venue.seeking_talent = seeking_talent
            venue.seeking_description = seeking_description
            db.session.commit()
            flash('Venue ' + name + ' was successfully updated!')
        except:
            db.session.rollback()
            print(sys.exc_info())
            flash('An error occurred. Venue ' + name + ' could not be updated.')
            error = True
        finally:
            db.session.close()
    else:
        error = True

    if error:
        return abort(500)
    else:
        return redirect(url_for('show_venue', venue_id=venue_id))
Ejemplo n.º 19
0
def create_venue_submission():
    form = VenueForm(request.form)
    print(request.form)

    facebook_link = form.facebook_link.data\
        if form.facebook_link.data != "" else None
    image_link = form.image_link.data\
        if form.image_link.data != "" else None
    website = form.website.data\
        if form.website.data != "" else None
    seeking_talent = True\
        if form.seeking_description.data != "" else False
    seeking_description = form.seeking_description.data\
        if form.seeking_description.data != "" else None

    if form.validate_on_submit():
        error = False
        try:
            venue = Venue(name=form.name.data,
                          city=form.city.data,
                          state=form.state.data,
                          address=form.address.data,
                          phone=form.phone.data,
                          genres=",".join(form.genres.data),
                          facebook_link=facebook_link,
                          image_link=image_link,
                          website=website,
                          seeking_talent=seeking_talent,
                          seeking_description=seeking_description)
            venue.insert()
        except Exception:
            error = True
            db.session.rollback()
            print(exc_info())
        finally:
            db.session.close()
            if error:
                flash('An error occurred. Venue ' + form.name.data + 'could\
                      not be listed.')
            else:
                flash('Venue ' + form.name.data + ' was successfully\
                    listed!')
            return render_template('pages/home.html')
    else:
        flash('Please ensure all details provided are valid')
        print(form.errors)
        return render_template('forms/new_venue.html', form=form)
Ejemplo n.º 20
0
def create_venue_submission():
    form = VenueForm()
    if not form.validate_on_submit():
        flash(f'An error occurred. Venue could not be listed.', 'error')
        return render_template('pages/home.html')

    try:
        new_venue = Venue.from_dict(form.data)
        db.session.add(new_venue)
        db.session.commit()
        flash(f'Venue {new_venue.name} was successfully listed!')
    except:
        db.session.rollback()
        abort(500)
    finally:
        db.session.close()
    return render_template('pages/home.html')
Ejemplo n.º 21
0
def edit_venue_submission(venue_id):
    form = VenueForm(request.form)
    venue = Venue.query.get(venue_id)

    facebook_link = form.facebook_link.data\
        if form.facebook_link.data != "" else None
    image_link = form.image_link.data\
        if form.image_link.data != "" else None
    website = form.website.data\
        if form.website.data != "" else None
    seeking_talent = True\
        if form.seeking_description.data != "" else False
    seeking_description = form.seeking_description.data\
        if form.seeking_description.data != "" else None

    if form.validate_on_submit():
        error = False
        try:
            venue.name = form.name.data
            venue.city = form.city.data
            venue.address = form.address.data
            venue.state = form.state.data
            venue.phone = form.phone.data
            venue.genres = ",".join(form.genres.data)
            venue.facebook_link = facebook_link
            venue.image_link = image_link
            venue.website = website
            venue.seeking_talent = seeking_talent
            venue.seeking_description = seeking_description
            venue.update()
        except Exception:
            error = True
            db.session.rollback()
            print(exc_info())
        finally:
            db.session.close()
            if error:
                flash('An error occurred. Venue ' + str(form.name.data) +
                      'could not be updated.')
            else:
                flash('Venue ' + str(form.name.data) + ' was successfully\
                    updated!')
        return redirect(url_for('show_venue', venue_id=venue_id))
    else:
        flash('Please ensure all details are valid')
        return render_template('forms/edit_venue.html', form=form, venue=venue)
Ejemplo n.º 22
0
def create_venue_submission():
    form = VenueForm()
    error = False
    try:
        if form.validate_on_submit():
            venue = Venue(
                name=form.name.data,
                city=form.city.data,
                state=form.state.data,
                phone=form.phone.data,
                address=form.address.data,
                genres=form.genres.data,
                image_link=form.image_link.data,
                website=form.website.data,
                facebook_link=form.facebook_link.data,
                seeking_talent=form.seeking_talent.data,
                seeking_description=form.seeking_description.data
            )
            db.session.add(venue)
            db.session.commit()
            # 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
        else:
            raise Exception('Form validation failed')
    except Exception as e:
        print('create_venue_submission: ', e)
        db.session.rollback()
        print(sys.exc_info())
        error = True
    finally:
        db.session.close()
        # on successful db insert, flash success
    if error:
        # TODO: on unsuccessful db insert, flash an error instead.
        # e.g., flash('An error occurred. Venue ' + data.name + ' could not be
        # listed.')
        flash('An error occurred. Venue '
              + request.form['name'] +
              ' could not be listed.')
        return render_template('forms/new_venue.html', form=form)
    else:
        flash('Venue ' + request.form['name'] + ' was successfully listed!')
        return render_template('pages/home.html')
Ejemplo n.º 23
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
    error = False
    form = VenueForm()
    try:
        if form.validate_on_submit():
            new_venue = Venue(
                name=form.name.data,
                city=form.city.data,
                state=form.state.data,
                address=form.address.data,
                phone=form.phone.data,
                genres=','.join(form.genres.data),
                image_link=form.image_link.data,
                facebook_link=form.facebook_link.data,
                website=form.website.data,
                seeking_talent=form.seeking_talent.data,
                seeking_description=form.seeking_description.data)
            db.session.add(new_venue)
            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()
    # on successful db insert, flash success
    if (error):
        flash('Error!')
        return render_template('forms/new_venue.html', form=form)
    else:
        flash('Venue ' + request.form['name'] + ' was successfully listed!')
        return redirect(url_for('index'))
    # 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('forms/new_venue.html', form=form)
Ejemplo n.º 24
0
def edit_venue_submission(venue_id):
    form = VenueForm()
    if not form.validate_on_submit():
        flash(f'An error occurred. Venue could not be updated.', 'error')
        return redirect(url_for('show_venue', venue_id=venue_id))

    try:
        venue = Venue.query.get(venue_id)
        for key in form.data:
            if form.data.get(key) is not None:
                setattr(venue, key, form.data.get(key))
        db.session.commit()
        flash(f'Venue {venue.name} was successfully updated!')
    except:
        db.session.rollback()
        abort(500)
    finally:
        db.session.close()

    return redirect(url_for('show_venue', venue_id=venue_id))
Ejemplo n.º 25
0
Archivo: app.py Proyecto: flisz/FSND
def create_venue_submission():
    error = False
    # on successful db insert, flash success
    form = VenueForm(request.form)
    # enum fix pattern: https://stackoverflow.com/questions/13558345/flask-app-using-wtforms-with-selectmultiplefield
    if form.validate_on_submit():
        data = request.form
        city_name = data.get('city')
        city_state = data.get('state')
        name = data.get('name')
        genres = format_genres(data)
        address = data.get('address')
        phone = format_phone_number(data.get('phone'))
        facebook_link = data.get('facebook_link')
        image_link = data.get('image_link')

        try:
            city_id = City.get_id(city_state=city_state, city_name=city_name)
            if city_id is None:
                error = True
            new_venue = Venue(name=name, city_id=city_id, genres=genres, address=address, phone=phone,
                              facebook_link=facebook_link, image_link=image_link)
            db.session.add(new_venue)
            db.session.flush()
            venue_id = new_venue.id
            db.session.commit()
            flash('Venue ' + name + ' was successfully listed!')
        except:
            db.session.rollback()
            print(sys.exc_info())
            error = True
        finally:
            db.session.close()
    else:
        error = True

    if error:
        flash('An error occurred. Venue ' + name + ' could not be listed.')
        return abort(500)
    else:
        return redirect(url_for('show_venue', venue_id=venue_id))
Ejemplo n.º 26
0
def create_venue():
    """
    Create a venue
    """
    is_post = (request.method == 'POST')
    form = VenueForm()
    if is_post:
        genres = form.genres.data
    else:
        genres = list()

    # set choices & validators based on possible options
    set_genre_field_options(form.genres, genres)

    if is_post and form.validate_on_submit():

        venue = populate_venue(venue_factory(FactoryObj.OBJECT), form)

        # check for existing venue
        venue_id, venue_name = existing_venue(
            *extract_unique_properties(venue))

        if venue_id is not None:
            url = url_for('display_venue', venue_id=venue_id)
            flash(
                Markup(f'A listing for {venue_name} already exists! '
                       f'Please see <a href="{url}">{venue_name}</a>.'))
        else:
            # add venue
            success, venue_name = create_venue_impl(venue)

            return create_result(success, venue_name, 'Venue')

    return render_template('forms/edit_venue.html',
                           form=form,
                           title='Create Venue',
                           submit_action=url_for('create_venue'),
                           cancel_url=url_for('index'),
                           submit_text='Create',
                           submit_title='Create venue')
Ejemplo n.º 27
0
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)
Ejemplo n.º 28
0
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)
Ejemplo n.º 29
0
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))
Ejemplo n.º 30
0
def create_venue_submission():
    try:
        request_data = {**request.form}
        request_data['genres'] = ','.join(request.form.getlist('genres') or [])
        request_data['seeking_talent'] = (request_data.get('seeking_talent')
                                          or '').lower() == 'y'

        form = VenueForm(**request_data)
        if not form.validate_on_submit():
            return render_template('forms/new_venue.html', form=form)

        request_data.pop('csrf_token', None)
        venue = Venue(**request_data)
        db.session.add(venue)
        db.session.commit()
        flash('Venue ' + request.form['name'] + ' was successfully listed!')
    except:
        flash('Venue ' + request.form['name'] + ' was failed!')
        db.session.rollback()
    finally:
        db.session.close()

    return render_template('pages/home.html')