コード例 #1
0
ファイル: views.py プロジェクト: nixamas/brewbud
def savebrew():
    print("/savebrew/")
    beer_form = BeerForm(request.form, prefix="beer")
    brew_form = BrewForm(request.form, prefix="brew")
    brewery_model = BreweryModel()
    brewery_model.brewery_name = beer_form.beer_brewery.data
    print("searching for brewery -- " + str(beer_form.beer_brewery.data))
    brewery_picked = BreweryModel.query.filter_by(brewery_name=beer_form.beer_brewery.data).first()
    print("brewery_model :: " + str(brewery_picked))
    beer_model = BeerModel(beer_form, brewery_picked)
    brew_model = BrewModel(beer_model, brew_form)
    print("beer model --- > " + str(beer_model))
    print("brew model --- > " + str(brew_model))
    print("brew_validate :: " + str(brew_form.validate()))
    print("beer_validate :: " + str(beer_form.validate()))
    if beer_form.beer_name == None or beer_form.beer_name == "":    #TODO : Probably need to change the logic here later
        print("Invalid data found in brew_form or beer_form)")
        flash("Brew data is invalid, A Name and Brewery is required!!")
        return redirect(url_for("newbrew", brewform=BrewForm(prefix="brew"), beerform=BeerForm(prefix="beer")))
    if brew_form.brew_id.data == None or brew_form.brew_id.data == "":
        print("Saving a new brew")
        print("brewery_model :: " + str(brewery_picked))
        db.session.add(beer_model)
        print("saved beer -- " + str(beer_model))
        db.session.add(brew_model)
        print("saved brew")
        db.session.commit()
        print("****************************************************************")
        saveFileAndReturnFilePaths(request.files.getlist('beer_images[]'), brew_model.brew_id, "brew")
        print("****************************************************************")
    elif brew_form.brew_id.data != None and brew_form.brew_id.data != "":
        print("updating brew :: " + str(brew_form.brew_id.data))
        #brew_model = BrewModel(brew_form)
        print("Updating brew model with :: " + str(brew_model))
        brew_found = BrewModel.query.filter_by(brew_id=brew_form.brew_id.data).first()
        brew_model.brew_id = brew_form.brew_id.data
        copyBeerModelDataToNewBeerModel(beer_model, brew_found.beer)
        copyBrewModelDataToNewBrewModel(brew_model, brew_found)
        #brew_found.brew_brewery = brew_model.brew_brewery
        #brew_found.brew_style = brew_model.brew_style
        #brew_found.brew_abv = brew_model.brew_abv
        #brew_found.brew_ibu = brew_model.brew_ibu
        #brew_found.brew_srm = brew_model.brew_srm
        #brew_found.brew_og = brew_model.brew_og
        ##brew_found.brew_rating = brew_model.brew_rating
        db.session.commit()
        
    return redirect(url_for('brew', brew_id=brew_model.brew_id))
コード例 #2
0
ファイル: views.py プロジェクト: nixamas/brewbud
def savebeer():
    print("/savebeer/")
    form = BeerForm(request.form)
    print("/savebeer/")
    print(str(form))
    if not form.validate():
        print("Beer Form Data is invalid")
        flash("Beer data is invalid, A Name and Brewery is required!!")
        return redirect(url_for("newbeer", form=form))
    if form.beer_id.data == None or form.beer_id.data == "":
        print("Saving a new beer")
        print("views :: BeerForm -- " + str(form))
        print("beer_id :: " + str(form.beer_id.data))
        brewery_picked = BreweryModel.query.filter_by(brewery_id=form.beer_brewery.data).first()
        print("brewery picked --- >  " + str(brewery_picked) )
        #brewery_model = BreweryModel(brewery_picked)
        #brewery_model.brewery_name = form.beer_brewery.data
        print("brewery_model :: " + str(brewery_picked))
        db.session.add(brewery_picked)
        print("Brewery Saved")
        beer_model = BeerModel(form,brewery_picked)
        print("views :: BeerModel -- " + str(beer_model))
        db.session.add(beer_model)
        db.session.commit()
        print("****************************************************************")
        saveFileAndReturnFilePaths(request.files.getlist('beer_images[]'), beer_model.beer_id, "beer")
        print("****************************************************************")
        if request.method == 'POST' and form.validate():
            print("form validated!!!")
        return redirect(url_for('beer', beer_id=beer_model.beer_id))
    elif form.beer_id.data != None and form.beer_id.data != "":
        print("updating beer :: " + str(form.beer_id.data))
        beer_model = BeerModel(form)
        print("Updating beer model with :: " + str(beer_model))
        beer_found = BeerModel.query.filter_by(beer_id=form.beer_id.data).first()
        copyBeerModelDataToNewBeerModel(beer_model, beer_found)
        #beer_found.beer_name = beer_model.beer_name
        ##beer_found.brewery = beer_model.brewery
        #beer_found.beer_style = beer_model.beer_style
        #beer_found.beer_abv = beer_model.beer_abv
        #beer_found.beer_ibu = beer_model.beer_ibu
        #beer_found.beer_srm = beer_model.beer_srm
        #beer_found.beer_og = beer_model.beer_og
        #beer_found.beer_rating = beer_model.beer_rating
        db.session.commit()
        return redirect(url_for('beer', beer_id=form.beer_id.data))
コード例 #3
0
def add_beer():
    '''
    Add and save a beer to the database
    '''

    # need to pass the brewery dropdown data to the template, because this
    # information can change overtime as users add new breweries to the db
    brewery_dropdown_data = []
    qry = Brewery.query.order_by(Brewery.name)
    for brewery in qry:
        brewery_dropdown_data.append(brewery.name)

    form = BeerForm()
    if form.validate_on_submit():
        # this section is used to find the correct brewery_id for the selected
        # brewery, this is then passed to the beer object to be saved in the db
        selected_brewery = request.form.get("brewery", None)
        existing_breweries = Brewery.query.order_by(Brewery.name)
        for brewery in existing_breweries:
            if selected_brewery == brewery.name:
                brewery_id = brewery.id

        beer = Beer(name=form.name.data,
                    type=form.type.data,
                    abv=form.abv.data,
                    brewery_id=brewery_id)

        # save beer to database
        db_session.add(beer)
        db_session.commit()
        flash('You have successfully added a beer!')

        #redirect to view_all_beers
        return redirect(url_for('view_all_beers'))

    return render_template('add_beer.html',
                           form=form,
                           brewery_dropdown_data=brewery_dropdown_data)
コード例 #4
0
def home():
    """
    Home page of the app
    POST will check select fields and provide a rating as well as a link to send.
    GET will check for query string parameters and calculate based on the values.
    This allows us to avoid needing a data store when sharing our ratings.
    If no values are provided on a GET the default priority will be 'Not Set'
    """

    form = BeerForm()

    if request.method == 'POST':
        # do the calculations and return the information on the results page
        appearance = int(form.appearance_selector.data)
        aroma = int(form.aroma_selector.data)
        flavor = int(form.flavor_selector.data)
        mouthfeel = int(form.mouthfeel_selector.data)
        myappearance = int(form.myappearance_selector.data)
        myaroma = int(form.myaroma_selector.data)
        myflavor = int(form.myflavor_selector.data)
        replay = int(form.replay_selector.data)

        # calculate score
        style_factors = (appearance + aroma + flavor + mouthfeel) / 4.0
        my_factors = (myappearance + myaroma + myflavor + replay) / 4.0
        score = (style_factors + my_factors) / 2.0

        if score < 1.8:
            rating = "Poor it out!"
        elif score < 3.6:
            rating = "Meh"
        elif score < 5.4:
            rating = "Good"
        elif score < 7.2:
            rating = "Yum!"
        else:
            rating = "Desert island beer!!!"

        url = "http://127.0.0.1:8081/?appearance=" + str(appearance) + "&aroma=" + str(aroma) + "&flavor=" \
              + str(flavor) + "&mouthfeel=" + str(mouthfeel) + "&myappearance=" + str(myappearance) \
              + "&myaroma=" + str(myaroma) + "&myflavor=" + str(myflavor) + "&replay=" + str(replay)

        return render_template('index.html', form=form, rating=rating, url=url)
        # if GET then check if query string parameters to calculate
    else:
        try:
            appearance = int(request.args.get('appearance'))
            aroma = int(request.args.get('aroma'))
            flavor = int(request.args.get('flavor'))
            mouthfeel = int(request.args.get('mouthfeel'))
            myappearance = int(request.args.get('myappearance'))
            myaroma = int(request.args.get('myaroma'))
            myflavor = int(request.args.get('myflavor'))
            replay = int(request.args.get('replay'))

            # calculate score
            style_factors = (appearance + aroma + flavor + mouthfeel) / 4.0
            my_factors = (myappearance + myaroma + myflavor + replay) / 4.0
            score = (style_factors + my_factors) / 2.0

            if score < 1.8:
                rating = "Poor it out!"
            elif score < 3.6:
                rating = "Meh"
            elif score < 5.4:
                rating = "Good"
            elif score < 7.2:
                rating = "Yum!"
            else:
                rating = "Desert island beer!!!"

            url = "http://127.0.0.1:8081/?appearance=" + str(appearance) + "&aroma=" + str(aroma) + "&flavor=" \
                  + str(flavor) + "&mouthfeel=" + str(mouthfeel) + "&myappearance=" + str(myappearance) \
                  + "&myaroma=" + str(myaroma) + "&myflavor=" + str(myflavor) + "&replay=" + str(replay)

        except:
            rating = "Not Set"
            url = ""

        return render_template('index.html', form=form, rating=rating, url=url)