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))
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))
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)
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)