コード例 #1
0
ファイル: app.py プロジェクト: szalai-balazs-david/Fyyur
def create_venue_submission():
    form = VenueForm()
    if form.validate_on_submit():
        try:
            venue = Venue()
            venue.name = form.name.data
            venue.city_id = get_city_id(form.city.data, form.state.data)
            venue.address = form.address.data
            venue.facebook_link = form.facebook.data
            venue.image_link = form.image.data
            venue.phone = form.phone.data
            venue.seeking_talent = form.isSeeking.data
            venue.seeking_description = form.seekingDescription.data
            venue.genres = form.genres.data
            db.session.add(venue)
            db.session.commit()
            flash('Venue ' + venue.name + ' was successfully listed!')
        except Exception as e:
            flash('An error occurred: ' + str(e))
            db.session.rollback()
        finally:
            db.session.close()
        return redirect(url_for('venues'))
    return render_template('forms/new_venue.html', form=form)
コード例 #2
0
def create_venue_submission():  #
    # V TODO: insert form data as a new Venue record in the db, instead
    # V TODO: modify data to be the data object returned from db insertion

    form = VenueForm(request.form, meta={'csrf': False})
    if form.validate():
        try:
            form_venue = request.form

            #city
            city_name = form_venue['city']
            state_name = form_venue['state']
            city_from_db = City.query.join(State).filter(
                City.name == city_name, State.name == state_name).all()
            if len(city_from_db) > 0:
                city_id = city_from_db[0].id
            else:
                state = State.query.filter_by(name=state_name).all()[0]
                new_city = City(name=city_name, state=state)
                db.session.add(new_city)
                db.session.commit()
                city_id = new_city.id

            #data
            new_venue = Venue(
                name=form_venue['name'],
                address=form_venue['address'],
                phone=form_venue['phone'],
                website=form_venue['website'],
                facebook_link=form_venue['facebook_link'],
                seeking_description=form_venue['seeking_description'],
                image_link=form_venue['image_link'])

            if 'seeking_talent' not in form_venue:
                new_venue.seeking_talent = False
            else:
                new_venue.seeking_talent = True

            new_venue.city_id = city_id

            genres = Genre.query.filter(
                Genre.name.in_(form_venue.getlist('genres'))).all()
            for genre in genres:
                new_venue.genres.append(genre)

            #create
            db.session.add(new_venue)
            db.session.commit()
            #on successful db insert, flash success
            flash('Venue ' + form_venue['name'] + ' was successfully listed!')
        except:
            db.session.rollback()
            print(sys.exc_info())
            flash('An error occurred. Venue ' + form_venue['name'] +
                  ' could not be listed.')
        finally:
            db.session.close()
    else:
        message = []

        for field, err in form.errors.items():
            message.append(field + ' ' + '|'.join(err))
        flash('The Venue data is not valid. Please try again! Errors: ' +
              str(message))

    # V 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')