Ejemplo n.º 1
0
def edit_artist_submission(artist_id):
    form = ArtistForm(request.form)
    errors = None

    if form.validate():
        try:
            artist = Artist.query.get_or_404(artist_id)
            form.populate_obj(artist)
            db.session.add(artist)
            db.session.commit()
            flash(f"Artist {artist.name} was successfully updated!")
        except IntegrityError as exec:
            logger.error(exec)
            db.session.rollback()
            errors = True
        finally:
            db.session.close()

    if form.errors or errors:
        if form.errors:
            flash_error(parse_errors(form.errors))
        else:
            artist_name = request.form.get("name", "")
        flash_error(
            f"An error occurred. Artist {artist_name} could not be listed")
        return render_template("forms/edit_artist.html",
                               form=form,
                               artist=artist)
    return redirect(url_for("artists.artists_detail", artist_id=artist_id))
Ejemplo n.º 2
0
def create_artist_submission():
    form = ArtistForm(request.form)
    errors = None

    if form.validate():
        try:
            # create City object
            city_name, state = form.city._fields[
                "name"].data, form.city.state.data
            city_name = city_name.strip().capitalize()

            # get or create
            city = City.query.filter_by(name=city_name).one_or_none()
            if not city:
                city = City(name=city_name, state=state)
                db.session.add(city)

            # create Contact Information object
            contact_info = ContactInfo(
                phone=form.contact_info.phone.data,
                image_link=form.contact_info.image_link.data,
                website=form.contact_info.website.data,
                facebook_link=form.contact_info.facebook_link.data,
            )
            db.session.add(contact_info)

            # finally create Artist object
            genres = form.genres.data
            name = form.name.data.strip()

            artist = Artist(
                name=name,
                genres=genres,
                city=city,
                contact_info=contact_info,
            )
            db.session.add(artist)
            db.session.commit()

            flash(f"Artist {name} was successfully listed!")
        except IntegrityError as exec:
            logger.error(exec)
            db.session.rollback()
            errors = True
        finally:
            db.session.close()

    if form.errors or errors:
        if form.errors:
            flash_error(parse_errors(form.errors))
        else:
            artist_name = request.form.get("name", "")
        flash_error(
            f"An error occurred. Artist {artist_name} could not be listed")
        return render_template("forms/edit_artist.html", form=form)
    return redirect(url_for("index"))
Ejemplo n.º 3
0
def edit_artist_submission(artist_id):
    error = False
    artist = Artist.query.get(artist_id)
    form = ArtistForm()
    form.genres.choices = [(g.id, g.name) for g in Genre.query.all()]
    if form.validate_on_submit():
        try:
            artist.name = request.form['name']
            artist.city = request.form['city']
            artist.state = request.form['state']
            artist.phone = request.form['phone']
            artist.image_link = request.form['image_link']
            artist.website = request.form['website_link']
            artist.facebook_link = request.form['facebook_link']
            artist.seeking_venue = True if 'seeking_venue' in request.form else False
            artist.seeking_description = request.form['seeking_description']
            artist.genres.clear()
            artist_genres = Genre.query.filter(
                Genre.id.in_([int(i)
                              for i in request.form.getlist('genres')])).all()
            artist.genres.extend(artist_genres)
            db.session.commit()
        except:
            error = True
            db.session.rollback()
        finally:
            db.session.close()
        if error:
            flash('An error occurred. Artist ' + request.form['name'] +
                  ' could not be updated, please try again.')
            return render_template('forms/edit_artist.html',
                                   form=form,
                                   artist=artist)
        else:
            flash('Artist ' + request.form['name'] +
                  ' was successfully updated!')
            return redirect(url_for('show_artist', artist_id=artist_id))

    # Errors on form input, render template again showing errors
    return render_template('forms/edit_artist.html', form=form, artist=artist)
Ejemplo n.º 4
0
def edit_artist(artist_id):
    artist = Artist.query.get(artist_id)
    if not artist:
        return render_template('errors/404.html')
    form = ArtistForm()
    form.genres.choices = [(g.id, g.name) for g in Genre.query.all()]
    form.name.data = artist.name
    form.city.data = artist.city
    form.state.data = artist.state
    form.phone.data = artist.phone
    form.genres.data = [genre.id for genre in artist.genres]
    form.facebook_link.data = artist.facebook_link
    form.image_link.data = artist.image_link
    form.website_link.data = artist.website
    form.seeking_venue.data = artist.seeking_venue
    form.seeking_description.data = artist.seeking_description
    return render_template('forms/edit_artist.html', form=form, artist=artist)
Ejemplo n.º 5
0
def edit_artist(artist_id):
    artist_to_edit = Artist.query.get(artist_id)
    # pre-populate the form with already existing venue data
    if request.method == "GET":
        # populate form with values from venue with ID <venue_id>
        form = ArtistForm(obj=artist_to_edit)
        return render_template('forms/edit_artist.html',
                               form=form,
                               artist=artist_to_edit)
    # submission was made to edit venue
    elif request.method == "POST":
        try:
            updated_venue_dict = request.form.to_dict()
            # get list of genres
            updated_venue_dict["genres"] = request.form.getlist('genres')
            # convert to boolean -- if not checked key won't exist
            updated_venue_dict["seeking_venue"] = updated_venue_dict.get(
                "seeking_venue") == "y"
            # remove empty string values
            updated_venue_dict = {
                k: v
                for k, v in updated_venue_dict.items() if v != ''
            }
            # update attributes of the venue object
            for key, value in updated_venue_dict.items():
                setattr(artist_to_edit, key, value)
            # commit the updates
            db.session.commit()
            # on successful db insert, flash success
            flash('{} was successfully updated!'.format(artist_id))
            return redirect(url_for('show_artist', artist_id=artist_id))
        except Exception as e:
            db.session.rollback()
            # on unsuccessful db insert, flash an error instead.
            flash(
                "An error occurred while trying to update venue: {}".format(e),
                "error")
        finally:
            db.session.close()
        return render_template('pages/home.html')
Ejemplo n.º 6
0
def edit_artist(artist_id):
    artist = Artist.query.get_or_404(artist_id)
    form = ArtistForm(obj=artist)
    return render_template("forms/edit_artist.html", form=form, artist=artist)
Ejemplo n.º 7
0
def create_artist_form():
    return render_template("forms/new_artist.html", form=ArtistForm())
Ejemplo n.º 8
0
def create_artist_form():
    form = ArtistForm()
    form.genres.choices = [(g.id, g.name) for g in Genre.query.all()]
    return render_template('forms/new_artist.html', form=form)
Ejemplo n.º 9
0
def create_artist_form():
    form = ArtistForm()
    return render_template('forms/new_artist.html', form=form)