コード例 #1
0
ファイル: venues.py プロジェクト: markrofail/flask-fyurr
def edit_venue_submission(venue_id):
    form = VenueForm(request.form)
    errors = None

    if form.validate():
        try:
            venue = Venue.query.get_or_404(venue_id)
            form.populate_obj(venue)
            db.session.add(venue)
            db.session.commit()
            flash(f"Venue {venue.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:
            venue_name = request.form.get("name", "")
            flash_error(
                f"An error occurred. Venue {venue_name} could not be listed")
        return render_template("forms/edit_venue.html", form=form, venue=venue)
    return redirect(url_for("venues.venues_detail", venue_id=venue_id))
コード例 #2
0
def edit_venue_submission(venue_id):
    error = False
    venue = Venue.query.get(venue_id)
    form = VenueForm()
    form.genres.choices = [(g.id, g.name) for g in Genre.query.all()]
    if form.validate_on_submit():
        try:
            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.website = request.form['website_link']
            venue.facebook_link = request.form['facebook_link']
            venue.seeking_talent = True if 'seeking_talent' in request.form else False
            venue.seeking_description = request.form['seeking_description']
            venue.genres.clear()
            venue_genres = Genre.query.filter(
                Genre.id.in_([int(i)
                              for i in request.form.getlist('genres')])).all()
            venue.genres.extend(venue_genres)
            db.session.commit()
        except:
            error = True
            db.session.rollback()
        finally:
            db.session.close()
        if error:
            flash('An error occurred. Venue ' + request.form['name'] +
                  ' could not be updated, please try again.')
            return render_template('forms/edit_venue.html',
                                   form=form,
                                   venue=venue)
        else:
            flash('Venue ' + request.form['name'] +
                  ' was successfully updated!')
            return redirect(url_for('show_venue', venue_id=venue_id))

    # Errors on form input, render template again showing errors
    return render_template('forms/edit_venue.html', form=form, venue=venue)
コード例 #3
0
def edit_venue(venue_id):
    venue = Venue.query.get(venue_id)
    if not venue:
        return render_template('errors/404.html')
    form = VenueForm()
    form.genres.choices = [(g.id, g.name) for g in Genre.query.all()]
    form.name.data = venue.name
    form.city.data = venue.city
    form.state.data = venue.state
    form.phone.data = venue.phone
    form.address.data = venue.address
    form.genres.data = [genre.id for genre in venue.genres]
    form.facebook_link.data = venue.facebook_link
    form.image_link.data = venue.image_link
    form.website_link.data = venue.website
    form.seeking_talent.data = venue.seeking_talent
    form.seeking_description.data = venue.seeking_description
    return render_template('forms/edit_venue.html', form=form, venue=venue)
コード例 #4
0
def edit_venue(venue_id):
    venue_to_edit = Venue.query.get(venue_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 = VenueForm(obj=venue_to_edit)
        return render_template('forms/edit_venue.html',
                               form=form,
                               venue=venue_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_talent"] = updated_venue_dict.get(
                "seeking_talent") == "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(venue_to_edit, key, value)
            # commit the updates
            db.session.commit()
            # on successful db insert, flash success
            flash('{} was successfully updated!'.format(venue_id))
            return redirect(url_for('show_venue', venue_id=venue_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')
コード例 #5
0
def create_venue_form():
    form = VenueForm()
    form.genres.choices = [(g.id, g.name) for g in Genre.query.all()]
    return render_template('forms/new_venue.html', form=form)
コード例 #6
0
def create_venue_form():
    form = VenueForm()
    return render_template('forms/new_venue.html', form=form)
コード例 #7
0
ファイル: venues.py プロジェクト: markrofail/flask-fyurr
def edit_venue(venue_id):
    venue = Venue.query.get_or_404(venue_id)
    form = VenueForm(obj=venue)
    return render_template("forms/edit_venue.html", form=form, venue=venue)
コード例 #8
0
ファイル: venues.py プロジェクト: markrofail/flask-fyurr
def create_venue_submission():
    form = VenueForm(request.form)
    errors = None

    if not form.validate():
        errors = parse_errors(form.errors)
        flash_error(errors)
        return render_template("forms/new_venue.html", form=form)

    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 Venue object
        genres = form.genres.data
        address = form.address.data.strip()
        name = form.name.data.strip()

        venue = Venue(
            name=name,
            address=address,
            genres=genres,
            city=city,
            contact_info=contact_info,
        )

        db.session.add(venue)
        db.session.commit()

        flash(f"Venue {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:
            venue_name = request.form.get("name", "")
            flash_error(
                f"An error occurred. Venue {venue_name} could not be listed")
        return render_template("forms/edit_venue.html", form=form)
    return redirect(url_for("index"))
コード例 #9
0
ファイル: venues.py プロジェクト: markrofail/flask-fyurr
def create_venue_form():
    return render_template("forms/new_venue.html", form=VenueForm())