Пример #1
0
def create_artist_submission():
    form = ArtistForm()
    if form.validate_on_submit():
        try:
            artist = Artist(
                name=form.name.data,
                city=form.city.data,
                state=form.state.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_venue=True
                if form.seeking_venue_description.data else False,
                seeking_description=form.seeking_venue_description.data
                if form.seeking_venue_description.data else None)
            db.session.add(artist)
            db.session.commit()
            flash('Artist ' + 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. Artist ' + form.name.data +
                  ' could not be listed.')
            return render_template('pages/home.html')
        finally:
            db.session.close()
    else:
        return render_template('forms/new_artist.html', form=form)
Пример #2
0
def edit_artist_submission(artist_id):
    form = ArtistForm()

    if form.validate_on_submit():
        data = request.form
        try:
            is_seeking_venue = True if data['seeking_description'].strip(
            ) else False
            artist = Artist.query.get(artist_id)
            artist.name = data['name']
            artist.city = data['city']
            artist.state = data['state']
            artist.genres = request.form.getlist('genres')
            artist.phone = data['phone']
            artist.image_link = data['image_link']
            artist.facebook_link = data['facebook_link']
            artist.website = data['website']
            artist.seeking_venue = is_seeking_venue
            artist.seeking_description = data['seeking_description']
            db.session.commit()
            flash(f'Artist {data["name"]} was successfully edited!')
        except:
            db.session.rollback()
            flash(
                f'An error occurred. Artist {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_artist', artist_id=artist_id))
Пример #3
0
def create_artist():
    """Either load the blank form or submit a filled form to create a new artist."""

    form = ArtistForm(request.form)
    if request.method == 'POST':
        if form.validate_on_submit():
            artist = Artist(name=form.name.data,
                            genres=json.dumps(form.genres.data),
                            city=form.city.data,
                            state=form.state.data,
                            phone=form.phone.data,
                            facebook_link=form.facebook_link.data,
                            website=form.website.data,
                            seeking_venue=form.seeking_venue.data,
                            seeking_description=form.seeking_description.data,
                            email=form.email.data,
                            image_link=form.image_link.data)
            try:
                db.session.add(artist)
                db.session.commit()
                message = f'Artist {artist.name} was successfully listed!', 'info'
            except:
                db.session.rollback()
                message = f'An error occurred. Artist {artist.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_artist.html', form=form)
Пример #4
0
def create_artist_submission():
    error = False
    form = ArtistForm()
    try:
        if form.validate_on_submit():
            if form.seeking_venue.data == 'True':
                seeking = True
            else:
                seeking = False
            artist = Artist(name=form.name.data,
                            city=form.city.data,
                            state=form.state.data,
                            phone=form.phone.data,
                            image_link='',
                            facebook_link=form.facebook_link.data,
                            genres=form.genres.data,
                            website=form.website.data,
                            seeking_venue=seeking,
                            seeking_description=form.seeking_description.data)
            db.session.add(artist)
            db.session.commit()
            flash('Artist {} was successfully listed!'.format(form.name.data))
            return redirect(url_for('index'))
        flash('An error occurred. Artist {} 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_artist.html', form=form)
Пример #5
0
def edit_artist_submission(artist_id):
  form = ArtistForm(request.form)
  # TODO: take values from the form submitted, and update existing
  if form.validate_on_submit():
    try:
      a = db.session.query(Artist).get(artist_id)
      a.name = form.name.data
      a.city = form.city.data
      a.state = form.state.data
      a.phone = form.phone.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_venue = bool(form.seeking_venue.data)
      a.seeking_description = form.seeking_description.data
    # artist record with ID <artist_id> using the new attributes
      db.session.commit()
      flash('Artist ' + request.form['name'] + ' was successfully updated!')
    # TODO: on unsuccessful db insert, flash an error instead.
    except:
      flash('An error occurred. Artist ' + form.name.data + ' could not be updated.')
      db.session.rollback()
      print(sys.exc_info())
    finally:
      db.session.close()
    return redirect(url_for('show_artist', artist_id=artist_id))
  else:
    print(form.errors)
    return render_template('forms/edit_artist.html', form=form)
Пример #6
0
def edit_artist_submission(artist_id):
    artist = Artist.query.get(artist_id)
    form = ArtistForm()
    error = False
    try:
        if form.validate_on_submit():
            artist.name = form.name.data
            artist.genres = form.genres.data
            artist.city = form.city.data
            artist.state = form.state.data
            artist.phone = form.phone.data
            artist.website = form.website.data
            artist.facebook_link = form.facebook_link.data
            artist.seeking_venue = form.seeking_venue.data
            artist.seeking_description = form.seeking_description.data
            artist.image_link = form.image_link.data
            db.session.add(artist)
            db.session.commit()
        else:
            raise Exception('Form validation failed')
    except Exception as e:
        print('edit_artist_submission: ', e)
        db.session.rollback()
        print(sys.exc_info())
        error = True
    finally:
        db.session.close()
    if error:
        flash('An error occurred. Artist ' + request.form['name'] + ' could not be updated.')
        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))
Пример #7
0
def create_artist_submission():
    form = ArtistForm()
    if form.validate_on_submit():
        try:
            artist = Artist()
            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.genres = request.form.getlist('genres')
            artist.facebook_link = request.form['facebook_link']
            artist.website = request.form['website']
            artist.seeking_venue = True if 'seeking_venue' in request.form else False
            artist.seeking_description = request.form['seeking_description']
            db.session.add(artist)
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            flash(
                'An error occurred. Artist {} Could not be listed!, {}'.format(
                    request.form['name'], str(e)))
        finally:
            db.session.close()
            flash('Artist {} was successfully listed!'.format(
                request.form['name']))
            return redirect(url_for('artists'))
    return render_template('forms/new_artist.html', form=form)
Пример #8
0
def create_artist_submission():
    form = ArtistForm()
    if form.validate_on_submit():
        data = request.form
        try:
            is_seeking_venue = True if data['seeking_description'].strip(
            ) else False
            artist = Artist(name=data['name'],
                            city=data['city'],
                            state=data['state'],
                            genres=request.form.getlist('genres'),
                            phone=data['phone'],
                            image_link=data['image_link'],
                            facebook_link=data['facebook_link'],
                            website=data['website'],
                            seeking_venue=is_seeking_venue,
                            seeking_description=data['seeking_description'])
            db.session.add(artist)
            db.session.commit()
            flash(f'Artist {data["name"]} was successfully listed!')
        except:
            db.session.rollback()
            flash(
                f'An error occurred. Artist {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_artist.html', form=form)
Пример #9
0
def create_artist_submission():
    artist = Artist()
    form = ArtistForm()
    if not form.validate_on_submit():
        flash('Invalid value found in ' + ', '.join(form.errors.keys()) +
              ' field(s).')
        return render_template('forms/new_artist.html', form=form)
    else:
        error = False
        try:
            form.populate_obj(artist)
            artist.phone = format_phone(artist.phone)
            db.session.add(artist)
            db.session.flush()
            artist_id = artist.id
            db.session.commit()
        except:
            error = True
            db.session.rollback()
        finally:
            db.session.close()
        if error:
            flash('An error occurred. Artist ' + artist.name +
                  ' could not be listed.')
            return redirect(url_for('index'))
        else:
            flash('Artist ' + request.form['name'] +
                  ' was successfully listed!')
            return redirect(url_for('show_artist', artist_id=artist_id))
Пример #10
0
def edit_artist_submission(artist_id):
    try:
        request_data = {**request.form}
        request_data['genres'] = ','.join(request.form.getlist('genres') or [])
        request_data['seeking_venue'] = (request_data.get('seeking_venue')
                                         or '').lower() == 'y'

        form = ArtistForm(**request_data)
        if not form.validate_on_submit():
            artist = Artist.query.filter_by(id=artist_id).first()
            return render_template('forms/edit_artist.html',
                                   form=form,
                                   artist=artist)

        request_data.pop('csrf_token', None)

        Artist.query.filter_by(id=artist_id).update(request_data)
        db.session.commit()
        flash(f'Artist {request.form["name"]} was successfully updated!')
    except:
        flash(f'Artist {request.form["name"]} was not updated!')
        db.session.rollback()
    finally:
        db.session.close()

    return redirect(url_for('show_artist', artist_id=artist_id))
Пример #11
0
def create_artist_submission():
    # called upon submitting the new artist listing form
    # insert form data as a new Venue record in the db, instead
    # modify data to be the data object returned from db insertion

    form = ArtistForm(request.form, meta={"csrf": False})

    if form.validate_on_submit():
        try:
            artist: Artist = Artist()
            form.populate_obj(artist)
            db.session.add(artist)
            db.session.commit()
            # on successful db insert, flash success
            flash(f"Artist {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')
Пример #12
0
def edit_artist(artist_id):
    # it must be imported here to avoid circular import
    from forms import ArtistForm
    artist = Artist.query.get_or_404(artist_id)
    form = ArtistForm(obj=artist)
    artist_name = artist.name
    if form.validate_on_submit():
        form.populate_obj(artist)
        try:
            db.session.add(artist)
            db.session.commit()
        except SQLAlchemyError:
            flash('An error occurred. Artist ' + artist_name +
                  ' could not be edited.')
            print(sys.exc_info())
            db.session.rollback()
            db.session.close()
            return render_template('forms/edit_artist.html',
                                   form=form,
                                   artist_name=artist_name)
        return redirect(url_for('show_artist', artist_id=artist_id))

    return render_template('forms/edit_artist.html',
                           form=form,
                           artist_name=artist_name)
Пример #13
0
def edit_artist_submission(artist_id):
    artist = Artist.query.get(artist_id)
    if Artist is None:
        abort(404)
    name = Artist.name
    form = ArtistForm()
    if not form.validate_on_submit():
        flash('Invalid value found in ' + ', '.join(form.errors.keys()) +
              ' field(s).')
        return render_template('forms/edit_artist.html',
                               form=form,
                               artist=artist)
    else:
        error = False
        try:
            edited = Artist()
            form.populate_obj(edited)
            for col in Artist.__table__.columns.keys():
                if col != 'id':
                    setattr(artist, col, getattr(edited, col))
            name = artist.name
            artist.phone = format_phone(artist.phone)
            db.session.commit()
        except:
            error = True
            db.session.rollback()
        finally:
            db.session.close()
        if error:
            flash('An error occurred. Artist ' + name +
                  ' could not be updated.')
            return redirect(url_for('index'))
        else:
            flash('Artist ' + name + ' was successfully updated!')
            return redirect(url_for('show_artist', artist_id=artist_id))
Пример #14
0
def create_artist_submission():
  # called upon submitting the new artist listing form
  form = ArtistForm(request.form)
  # TODO: insert form data as a new Venue record in the db, instead
  if form.validate_on_submit():
    try:
      name = form.name.data
      city = form.city.data
      state = form.state.data
      phone = form.phone.data
      facebook_link = form.facebook_link.data
      genres = form.genres.data
      image_link = form.image_link.data
      website = form.website.data
      seeking_venue = form.seeking_venue.data
      seeking_description = form.seeking_description.data
      artist = Artist(name=name, city=city, state=state, phone=phone, facebook_link=facebook_link, genres=genres,
      image_link=image_link, website=website, seeking_venue=bool(seeking_venue), seeking_description=seeking_description)
      db.session.add(artist)
      db.session.commit()
    # TODO: modify data to be the data object returned from db insertion
    # on successful db insert, flash success
      flash('Artist ' + request.form['name'] + ' was successfully listed!')
    # TODO: on unsuccessful db insert, flash an error instead.
    except:
      flash('An error occurred. Artist ' + form.name.data + ' could not be listed.')
      db.session.rollback()
      print(sys.exc_info())
    finally:
      db.session.close()
    return render_template('pages/home.html')
  else:
    print(form.errors)
    return render_template('forms/new_artist.html', form=form)
def edit_artist_submission(artist_id):
    """ Submit call back for edit artist form """
    # Get form data
    name = request.form['name']
    city = request.form['city']
    state = request.form['state']
    phone = request.form['phone']
    image_link = request.form['image_link']
    facebook_link = request.form['facebook_link']
    website = request.form['website']
    seeking_venue = request.form['seeking_venue'] == 'Yes'
    seeking_description = request.form['seeking_description']
    # genres is a list
    genres = request.form.getlist('genres')

    form = ArtistForm()
    # Validate form data
    if not form.validate_on_submit():
        flash(form.errors)
        return redirect(url_for('edit_artist_submission'))

    error = False
    try:
        # Update artist instance with form data
        artist = Artist.query.get(artist_id)
        artist.name = name
        artist.city = city
        artist.state = state
        artist.phone = phone
        artist.image_link = image_link
        artist.facebook_link = facebook_link
        artist.website = website
        artist.seeking_venue = seeking_venue
        artist.seeking_description = seeking_description
        db.session.add(artist)

        # Delete old generes
        for x in artist.genres:
            db.session.delete(x)

        # Creating Artist generes instances and assigning using backref
        for genre in genres:
            new_genre = ArtistsGenres(genre=genre)
            new_genre.artist = artist  # 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. Artist {name} could not be updated.')
        abort(500)

    flash(f'Artist {name} updated successfully')
    return redirect(url_for('show_artist', artist_id=artist_id))
def create_artist_submission():
    """ Submit callback for create artists form """
    # Get form data
    name = request.form['name']
    city = request.form['city']
    state = request.form['state']
    phone = request.form['phone']
    image_link = request.form['image_link']
    facebook_link = request.form['facebook_link']
    website = request.form['website']
    seeking_venue = request.form['seeking_venue'] == 'Yes'
    seeking_description = request.form['seeking_description']
    # genres is a list
    genres = request.form.getlist('genres')

    form = ArtistForm()
    # Validate form data
    if not form.validate_on_submit():
        flash(form.errors)
        return redirect(url_for('create_artist_submission'))

    error = False
    try:
        # Create a venue instance using form data
        artist = Artist(
            name=name,
            city=city,
            state=state,
            phone=phone,
            image_link=image_link,
            facebook_link=facebook_link,
            website=website,
            seeking_venue=seeking_venue,
            seeking_description=seeking_description
        )
        db.session.add(artist)

        # Creating Artist generes instances and assigning using backref
        for genre in genres:
            new_genre = ArtistsGenres(genre=genre)
            new_genre.artist = artist             # 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. Artist {name} could not be listed.')
        abort(500)

    flash(f'Artist {name} listed successfully')
    return render_template('pages/home.html')
Пример #17
0
def enter_band():
    """
    Display the artist entry page to the user and handle their input.
    """
    form = ArtistForm()
    
    if form.validate_on_submit():
        return band_info(form.name.data)
    else:
        return render_template('enter_band.html', form=form)
Пример #18
0
Файл: app.py Проект: flisz/FSND
def create_artist_submission():
    error = False
    form = ArtistForm(request.form)

    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)
        phone = format_phone_number(data.get('phone'))
        image_link = data.get('image_link')
        facebook_link = data.get('facebook_link')
        website = data.get('website')
        seeking_venue = True if data.get('seeking_venue') else False
        seeking_description = data.get('seeking_description')

        try:
            city_id = City.get_id(city_state=city_state, city_name=city_name)
            if city_id is None:
                error = True
            new_artist = Artist(name=name,
                                city_id=city_id,
                                genres=genres,
                                phone=phone,
                                image_link=image_link,
                                facebook_link=facebook_link,
                                website=website,
                                seeking_venue=seeking_venue,
                                seeking_description=seeking_description)
            db.session.add(new_artist)
            db.session.flush()
            artist_id = new_artist.id
            db.session.commit()
            flash('Artist ' + new_artist.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. Artist ' + name + ' could not be listed.')
        return abort(500)
    else:
        return redirect(url_for('show_artist', artist_id=artist_id))
Пример #19
0
def edit_artist(artist_id: int):
    """
    Edit an artist
    :param artist_id: id of the artist to edit

    A GET returns the form to be edited
    A POST persists the updates
    """
    artist, as_type, no_availability = artist_to_edit(artist_id)
    model = MultiDict(artist)

    availability = availability_by_artist(artist_id, as_type=as_type)
    if availability is None:
        availability = no_availability

    if request.method == 'GET':
        for key, value in model_items(availability,
                                      ignore=IGNORE_AVAILABILITY):
            if key == 'from_date':
                model.add(key, datetime_to_str(current_datetime()))
            elif is_available_time_key(key) and value is not None:
                model.add(key, time_to_str(value))

        form = ArtistForm(formdata=model)
        genres = model.getlist("genres")

    else:
        form = ArtistForm()
        genres = form.genres.data

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

    if request.method == 'POST' and form.validate_on_submit():
        success, artist_name = update_artist(artist["id"], form, availability)

        return update_result(success, artist_name, 'Artist',
                             url_for('display_artist', artist_id=artist_id))

    return render_template('forms/edit_artist.html',
                           form=form,
                           artist_name=model["name"],
                           title='Edit Artist',
                           submit_action=url_for('edit_artist',
                                                 artist_id=artist_id),
                           cancel_url=url_for('display_artist',
                                              artist_id=artist_id),
                           submit_text='Update',
                           submit_title='Update artist')
Пример #20
0
def create_artist_submission():
    form = ArtistForm(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_venue = 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
        print(form.genres.data)
        try:
            artist = Artist(name=form.name.data,
                            city=form.city.data,
                            state=form.state.data,
                            phone=form.phone.data,
                            genres=",".join(form.genres.data),
                            facebook_link=facebook_link,
                            image_link=image_link,
                            website=website,
                            seeking_venue=seeking_venue,
                            seeking_description=seeking_description)
            artist.insert()
        except Exception:
            error = True
            db.session.rollback()
            print(exc_info())
        finally:
            db.session.close()
            if error:
                flash('An error occurred. Artist ' + str(form.name.data) +
                      'could not be listed.')
            else:
                flash('Artist ' + str(form.name.data) + ' was successfully\
                      listed!')

        return render_template('pages/home.html')

    else:
        flash('Please ensure all details provided are valid')
        return render_template('forms/new_artist.html', form=form)
Пример #21
0
def edit_artist_submission(artist_id):
    form = ArtistForm(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_venue = True\
        if form.seeking_description.data != "" else False
    seeking_description = form.seeking_description.data\
        if form.seeking_description.data != "" else None

    artist = Artist.query.get(artist_id)
    if form.validate_on_submit():
        error = False
        try:
            artist.name = form.name.data
            artist.city = form.city.data
            artist.state = form.state.data
            artist.phone = form.phone.data
            artist.genres = ",".join(form.genres.data)
            artist.facebook_link = facebook_link
            artist.image_link = image_link
            artist.website = website
            artist.seeking_venue = seeking_venue
            artist.seeking_description = seeking_description
            artist.update()
        except Exception:
            error = True
            db.session.rollback()
            print(exc_info())
        finally:
            db.session.close()
            if error:
                flash('An error occurred. Artist ' + str(form.name.data) +
                      'could not be updated.')
            else:
                flash('Artist ' + str(form.name.data) + ' was successfully\
                    updated!')

        return redirect(url_for('show_artist', artist_id=artist_id))
    else:
        flash('Please ensure all details are valid')
        return render_template('forms/edit_artist.html',
                               form=form,
                               artist=artist)
Пример #22
0
Файл: app.py Проект: flisz/FSND
def edit_artist_submission(artist_id):
    form = ArtistForm(request.form)  # fix to get all selected values from form.
    error = False
    data = request.form
    print(json.dumps(data, indent=4))
    if form.validate_on_submit():
        city_name = data.get('city')
        city_state = data.get('state')
        city_id = City.get_id(city_state=city_state, city_name=city_name)
        if city_id is None:
            error = True

        name = data.get('name')
        genres = format_genres(data)
        phone = data.get('phone')
        facebook_link = data.get('facebook_link')
        image_link = data.get('image_link')
        website = data.get('website')
        seeking_venue = True if data.get('seeking_venue') else False
        seeking_description = data.get('seeking_description')
        try:
            artist = Artists.query.get(artist_id)
            artist.name = name
            artist.city_id = city_id
            artist.genres = genres
            artist.phone = phone
            artist.image_link = image_link
            artist.website = website
            artist.facebook_link = facebook_link
            artist.seeking_venue = seeking_venue
            artist.seeking_description = seeking_description
            db.session.commit()
            flash('Artist ' + name + ' was successfully updated!')
        except:
            db.session.rollback()
            print(sys.exc_info())
            flash('An error occurred. Artist ' + 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_artist', artist_id=artist_id))
Пример #23
0
def create_artist_submission():
    form = ArtistForm(request.form)
    if not form.validate_on_submit():
        flash('An error occurred. Artist ' + request.form['name'] +
              ' could not be listed.')
        return render_template('pages/home.html')
    error = False
    try:
        artist = Artist()
        artist.name = request.form['name']
        temp_state = State.query.filter(
            State.name == request.form['state']).one_or_none()
        if temp_state is None:
            temp_state = State(name=request.form['state'])
            db.session.add(temp_state)
        artist.state = temp_state
        temp_city = City.query.filter(
            City.name == request.form['city']).one_or_none()
        if temp_city is None:
            temp_city = City(name=request.form['city'], state_id=temp_state.id)
            db.session.add(temp_city)
        artist.city = temp_city
        artist.phone = request.form['phone']
        temp_genres = []
        for genre_name in request.form.getlist('genres'):
            genre = Genre.query.filter(
                Genre.name == genre_name.strip()).one_or_none()
            if genre is not None:
                temp_genres.append(genre)
        artist.genres = temp_genres
        artist.facebook_link = request.form['facebook_link']
        db.session.add(artist)
        db.session.commit()
    except Exception:
        error = True
        print(Exception.__name__)
        db.session.rollback()
        print(sys.exc_info())
    finally:
        db.session.close()
        if error:
            flash('An error occurred. Artist ' + request.form['name'] +
                  ' could not be listed.')
        else:
            flash('Artist ' + request.form['name'] +
                  ' was successfully listed!')
        return render_template('pages/home.html')
Пример #24
0
def edit_artist_submission(artist_id):
    form = ArtistForm(request.form)
    if not form.validate_on_submit():
        flash('An error occurred. Artist could not be changed.')
        return render_template('pages/home.html')
    error = False
    artist = Artist.query.get(artist_id)
    try:
        artist.name = request.form['name']
        temp_state = State.query.filter(
            State.name == request.form['state']).one_or_none()
        if temp_state is None:
            temp_state = State(name=request.form['state'])
            db.session.add(temp_state)
        artist.state = temp_state
        temp_city = City.query.filter(
            City.name == request.form['city']).one_or_none()
        if temp_city is None:
            temp_city = City(name=request.form['city'], state_id=temp_state.id)
            db.session.add(temp_city)
        artist.city = temp_city
        artist.phone = request.form['phone']
        temp_genres = []
        for genre_name in request.form.getlist('genres'):
            genre = Genre.query.filter(
                Genre.name == genre_name.strip()).one_or_none()
            if genre is not None:
                temp_genres.append(genre)
        artist.genres = temp_genres
        artist.image_link = request.form['image_link']
        artist.facebook_link = request.form['facebook_link']
        artist.website = request.form['website']
        artist.seeking_venue = True if 'seeking_venue' in request.form else False
        artist.seeking_description = request.form['seeking_description']

        db.session.commit()
    except Exception:
        error = True
        db.session.rollback()
        print(sys.exc_info())
    finally:
        db.session.close()
    if error:
        flash('An error occurred. Artist could not be changed.')
    if not error:
        flash('Artist was successfully updated!')
    return redirect(url_for('show_artist', artist_id=artist_id))
Пример #25
0
def create_artist_submission():
    # called upon submitting the new artist listing form
    # 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

    # on successful db insert, flash success
    # TODO: on unsuccessful db insert, flash an error instead.
    # e.g., flash('An error occurred. Artist ' + data.name + ' could not be listed.')
    error = False
    try:
        form = ArtistForm()
        if form.validate_on_submit():
            new_artist = Artist(
                name=form.name.data,
                city=form.city.data,
                state=form.state.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_venue=form.seeking_venue.data,
                seeking_description=form.seeking_description.data,
            )
            db.session.add(new_artist)
            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/new_artist.html', form=form)
    else:
        flash('Artist ' + request.form['name'] + ' was successfully listed!')
        return redirect(url_for('index'))
    return render_template('forms/new_artist.html', form=form)
Пример #26
0
def create_artist_submission():
    form = ArtistForm()
    if not form.validate_on_submit():
        flash(f'An error occurred. Artist could not be listed.', 'error')
        return render_template('pages/home.html')

    try:
        new_artist = Artist.from_dict(form.data)
        db.session.add(new_artist)
        db.session.commit()
        flash(f'Artist {new_artist.name} was successfully listed!')
    except Exception as e:
        print(e)
        abort(500)
    finally:
        db.session.close()

    return render_template('pages/home.html')
Пример #27
0
def create_artist():
    """
    Create an artist
    A GET returns an empty form
    A POST submits the info
    """
    is_post = (request.method == 'POST')
    form = ArtistForm()
    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():

        artist = populate_artist(artist_factory(FactoryObj.OBJECT), form)
        availability = populate_availability(
            availability_factory(FactoryObj.OBJECT), form)

        # check for existing artist
        artist_id, artist_name = existing_artist(
            *extract_unique_properties(artist))

        if artist_id is not None:
            url = url_for('display_artist', artist_id=artist_id)
            flash(
                Markup(f'A listing for {artist_name} already exists! '
                       f'Please see <a href="{url}">{artist_name}</a>.'))
        else:
            # add artist
            success, artist_name = create_artist_impl(artist, availability)

            return create_result(success, artist_name, 'Artist')

    return render_template('forms/edit_artist.html',
                           form=form,
                           title='Create Artist',
                           submit_action=url_for('create_artist'),
                           cancel_url=url_for('index'),
                           submit_text='Create',
                           submit_title='Create artist')
Пример #28
0
def create_artist_submission():
    form = ArtistForm()
    error = False
    try:
        if form.validate_on_submit():
            artist = Artist(
                name=form.name.data,
                city=form.city.data,
                state=form.state.data,
                phone=form.phone.data,
                genres=form.genres.data,
                image_link=form.image_link.data,
                facebook_link=form.facebook_link.data,
                website=form.website.data,
                seeking_venue=form.seeking_venue.data,
                seeking_description=form.seeking_description.data
            )
            db.session.add(artist)
            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_artist_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. Artist ' + request.form['name'] +
              ' could not be listed.')
        return render_template('forms/new_artist.html', form=form)
    else:
        flash('Artist ' + request.form['name'] + ' was successfully listed!')
        return render_template('pages/home.html')
Пример #29
0
def edit_artist_submission(artist_id):
    form = ArtistForm()
    if not form.validate_on_submit():
        flash(f'An error occurred. Artist could not be updated.', 'error')
        return redirect(url_for('show_artist', artist_id=artist_id))

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

    return redirect(url_for('show_artist', artist_id=artist_id))
Пример #30
0
def create_artist_submission():
    # called upon submitting the new artist listing form
    # 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 = ArtistForm()
    name = form.name.data
    created = False

    if form.validate_on_submit():
        try:
            attrs = {
                attr: getattr(form, attr).data
                for attr in ARTIST_SIMPLE_ATTRS
            }

            genres = ",".join(x for x in form.genres.data)

            new_artist = Artist(**attrs,
                                genres=genres,
                                available_times=[
                                    AvailableTime(**data)
                                    for data in form.available_times.data
                                ])

            db.session.add(new_artist)
            db.session.commit()
            # on successful db insert, flash success
            created = True
            flash("Artist " + 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.
    flash("An error occurred. Artist " + name + " could not be listed.")
    return render_template("forms/new_artist.html", form=form)
Пример #31
0
def create_artist():
    # it must be imported here to avoid circular import
    from forms import ArtistForm
    form = ArtistForm()

    if form.validate_on_submit():
        artist = Artist()
        form.populate_obj(artist)
        try:
            db.session.add(artist)
            db.session.commit()
        except SQLAlchemyError:
            flash('An error occurred. Artist ' + form.name.data +
                  ' could not be listed.')
            print(sys.exc_info())
            db.session.rollback()
            db.session.close()
            return render_template('forms/new_artist.html', form=form)

        flash('Artist ' + artist.name + ' was successfully listed!')
        return redirect(url_for('show_artist', artist_id=artist.id))
    return render_template('forms/new_artist.html', form=form)