Пример #1
0
def create_artist_submission():
    form = ArtistForm()
    if form.validate_on_submit():
        try:
            artist = Artist()
            artist.name = form.name.data
            artist.city_id = get_city_id(form.city.data, form.state.data)
            artist.phone = form.phone.data
            artist.image_link = form.image.data
            artist.facebook_link = form.facebook.data
            artist.website = form.website.data
            artist.seeking_venue = form.isSeeking.data
            artist.seeking_description = form.seekingDesc.data
            artist.genres = form.genres.data
            db.session.add(artist)
            db.session.commit()
            flash('Artist ' + artist.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('artists'))
    return render_template('forms/new_artist.html', form=form)
Пример #2
0
def create_artist_submission():
    # called upon submitting the new artist listing form
    # 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 = ArtistForm(request.form, meta={'csrf': False})
    if form.validate():

        try:
            form_artist = request.form

            #city
            city_name = form_artist['city']
            state_name = form_artist['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_artist = Artist(
                name=form_artist['name'],
                phone=form_artist['phone'],
                website=form_artist['website'],
                facebook_link=form_artist['facebook_link'],
                seeking_description=form_artist['seeking_description'],
                image_link=form_artist['image_link'])

            if 'seeking_venue' not in form_artist:
                new_artist.seeking_venue = False
            else:
                new_artist.seeking_venue = True

            new_artist.city_id = city_id

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

            db.session.add(new_artist)
            db.session.commit()
            # on successful db insert, flash success
            flash('Artist ' + form_artist['name'] +
                  ' was successfully listed!')
        except:
            db.session.rollback()
            print(sys.exc_info())
            flash('An error occurred. Artist ' + form_artist['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 Artist 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. Artist ' + data.name + ' could not be listed.')
    return render_template('pages/home.html')