def createMultiple(self): b = Beer(name="Trough", organic="Y", abv=11.2, ibu=9.0, brewery_id=None, style_id=None, images="http://www.placeholder.com/image.jpg") b2 = Beer(name="Kipp", organic="N", abv=13.1, ibu=9.1, brewery_id=None, style_id=None, images="http://www.placeholder.com/image.jpg") db.session.add(b) db.session.add(b2) db.session.commit() rev = Review(date="1996-11-11", rating=2.2, comment="Kipp was nasty.", beer_name=b2.id, brewery_name=None) db.session.add(rev) db.session.commit() self.assertNotEqual(rev.id, b.id) self.assertEqual(rev.id, b2.id)
def createReviewFK(self): b = Beer(name="Miller", organic="Y", abv=9.2, ibu=10.0, brewery_id=None, style_id=None, images="http://www.placeholder.com/image.jpg") brw = Brewery( name="BrewMe", city="Dallas", state="Texas", country="USA", established=2009, description="BrewMe is a IPA brewer.", images="https://www.drinkbritain.com/sites/default/files/image.png" ) db.session.add(b) db.session.add(brw) db.session.commit() rev = Review(date="2009-08-09", rating=3.2, comment="Miller was meh.", beer_name=b.id, brewery_name=brw.id) db.session.add(rev) db.session.commit() self.assertEqual(rev.beer_name, b.id) self.assertEqual(rev.brewery_name, brw.id)
def testTriple(self): brw = Brewery(name="Coor", city="Austin", state="Texas", country="USA", established=1996, description="Coor is an easy to drink beer.", images="https://www.coor.com/image.jpg") db.session.add(brw) db.session.commit() st = Style(name="Amber Ale", description="Amber Ale is red!", ibu_min=5.4, ibu_max=10.2, abv_min=7.6, abv_max=15, srm=21) db.session.add(st) db.session.commit() b = Beer(name="Lite Beer", organic="N", abv=9.6, ibu=14.2, brewery_id=brw.id, style_id=st.id, images="https://www.litebeer.com/litebeer.jpg") self.assertEqual(b.brewery_id, brw.id) self.assertEqual(b.style_id, st.id) self.assertEqual(b.id, 1)
def initialize_database(app, db): """Drop and restore database in a consistent state""" with app.app_context(): db.drop_all() db.create_all() # create beers db.session.add(Beer('ipa', 10)) db.session.add(Beer('pilsner', 8)) db.session.add(Beer('lager', 8)) db.session.add(Beer('stout', 7)) db.session.commit() # create donuts db.session.add(Donut('jelly')) db.session.add(Donut('glazed')) db.session.add(Donut('chocolate')) db.session.add(Donut('bavarian')) db.session.commit()
def post(self): beer_json = request.get_json() try: beer = Beer(name=beer_json['name'], description=beer_json['description']) session.add(beer) session.commit() return (jsonify(beer.to_json()), 201) except Exception as e: return ('Missing Parameters', 400)
def testBeer(self): b = Beer(name="Beer1", organic="Y", abv=10, ibu=15, brewery_id=None, style_id=None, images="thisisalink.html") db.session.add(b) db.session.commit() self.assertEqual(b.abv, 15) self.assertEqual(b.name, "Brewery1") self.assertEqual(b.id, 1)
def new_beer(): posted_data = request.forms.get('posted_data') beer = Beer() beer.name = request.forms.get('name') beer.cost_crowler = float(request.forms.get('cost_crowler')) beer.cost_cup = float(request.forms.get('cost_cup')) beer.cost_pint = float(request.forms.get('cost_pint')) beer.cost_growler = float(request.forms.get('cost_growler')) beer.description = request.forms.get('description') beer.type = request.forms.get('type') beer.put() bottle.redirect('beer')
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 Update(self): b = Beer(name="Beer1", organic="Y", abv=10, ibu=15, brewery_id=None, style_id=None, images="thisisalink.html") rev = Review(date="1982-08-09", rating=5, comment="Review1 was great!", beer_name=None, brewery_name=None) brw = Brewery(name="Trell", city="Miami", state="Florida", country="USA", established=1984, description="Trell is a hip local brewery.", images="https://www.placeholder.com/image.jpg") db.session.add(brw) db.session.add(b) db.session.add(rev) db.session.commit() db.session.query(Beer).update({Beer.brewery_id: 1, Beer.style_id: 1}) db.session.query(Review).update({ Review.beer_name: 1, Review.brewery_name: 1 }) db.session.commit() self.assertEqual(b.style_id, 1) self.assertEqual(b.brewery_id, 1) self.assertEqual(rev.beer_name, 1)
def parse_this(payload): # Parsing through data. Each item we pull must have every attribute present for us to grab it. for key,values in payload.items(): if "data" in key: data = json.dumps(values) data = json.loads(data) # Going through the json of the data that we will scrape (each is a beer/brewery/style combo) for x in data: b_description = "" established = "" country = "" state = "" city = "" website = "" images = "" abv = "" ibu = "" nameDisplay = "" organic = "" pic = "" shortName = "" description = "" ibuMin = "" ibuMax = "" abvMin = "" abvMax = "" srm = "" # Checking if brewery exists for a beer and other attributes for a brewery that we have for the model. if "breweries" in x: brewery = x['breweries'][0]["name"] try: if 'description' in x['breweries'][0]: b_description = x['breweries'][0]['description'] if len(b_description) > 200: b_description = "" except KeyError: # b_description = "Description Unavailable" continue try: if 'established' in x['breweries'][0]: established = x['breweries'][0]['established'] # print(established) except KeyError: # established = "Unavailable" continue if established == "": continue try: if x['breweries'][0]['locations'][0]['country']['displayName'] != None: country = x['breweries'][0]['locations'][0]['country']['displayName'] except KeyError: # country = "Country Name Unavailable" continue try: if x['breweries'][0]['locations'][0]['region'] != None: state = x['breweries'][0]['locations'][0]['region'] except KeyError: state = "State Name Unavailable" # continue try: if x['breweries'][0]['locations'][0]['region']: city = x['breweries'][0]['locations'][0]['locality'] except KeyError: # city = "City Name Unavailable" continue try: if x['breweries'][0]['locations'][0]['website']: website = x['breweries'][0]['locations'][0]['website'] except KeyError: # website = "www.empty.com" continue try: if 'images' in x['breweries'][0]: images = x['breweries'][0]['images']['squareLarge'] except KeyError: # images = "https://i2.wp.com/www.worldbeersguide.com/wp-content/uploads/2017/01/slide6.jpg" continue # print(brewery, b_description, established, country, state, city, website, images) try: if x['abv']: abv = x['abv'] except KeyError: # abv = "ABV Unavailable" continue try: if x['ibu']: ibu = x['ibu'] except KeyError: # ibu = "IBU Unavailable" continue try: if x['nameDisplay']: nameDisplay = x['nameDisplay'] if nameDisplay in beer_names: continue # beer_names.append(u''.join(nameDisplay).encode('utf-8')) # print(nameDisplay) except KeyError: # nameDisplay = "Name Unavailable" continue try: if x['isOrganic']: organic = x['isOrganic'] except KeyError: # organic = "Organic-ness Unavailable!" continue try: if x['labels']['large']: pic = x['labels']['large'] except: # pic = "www.empty.com" continue # Checking if style exists for a beer. We also grab other attributes that we need for our style model. if 'style' in x: try: if x['style']['shortName']: shortName = x['style']['shortName'] except KeyError: # shortName = "Style Name Unavailable" continue try: if x['style']['description']: description = x['style']['description'] except KeyError: # description = "Description Unavailable" continue try: if x['style']['srmMin'] and x['style']['srmMax']: srm = (float(x['style']['srmMin']) + float(x['style']['srmMax'])) / 2 except KeyError: # ibuMin = "IBU Minimum Unavailable" # assert(False) continue try: if x['style']['ibuMin']: ibuMin = x['style']['ibuMin'] except KeyError: # ibuMin = "IBU Minimum Unavailable" continue try: if x['style']['ibuMax']: ibuMax = x['style']['ibuMax'] except KeyError: # ibuMax = "IBU Maximum Unavailable" continue try: if x['style']['abvMin']: abvMin = x['style']['abvMin'] except KeyError: # abvMin = "ABV Minimum Unavailable" continue try: if x['style']['abvMax']: abvMax = x['style']['abvMax'] except KeyError: # abvMax = "ABV Maximum Unavailable" continue """ This is checking if we have not already encountered this style, and if so, make the style and make the style's pk the beer's fk style to the value recorded. If not, we set the fk of beer to the value recorded of the style we have already seen. """ st_id = -1 if not styles_dic.get(shortName): st = Style(name=shortName, description=description, ibu_min=float(ibuMin), ibu_max=float(ibuMax), abv_min=float(abvMin), abv_max=float(abvMax), srm=srm) db.session.add(st) db.session.commit() styles_dic[shortName] = st.id style_obj[shortName] = st st_id = st.id else: st_id = styles_dic[shortName] st = style_obj[shortName] """ Same as the block of code above, only that this deals with breweries. """ brw_id = -1 if not brew_dic.get(brewery): brw = Brewery(name=brewery, city=city, state=state, country=country, established=int(established), description=b_description, images=images, website=website) db.session.add(brw) db.session.commit() brew_dic[brewery] = brw.id brew_obj[brewery] = brw brw_id = brw.id else: brw_id = brew_dic[brewery] brw = brew_obj[brewery] """ Creating a beer to be put into our database. """ b = Beer(name=nameDisplay, organic=organic, abv=float(abv), ibu=float(ibu), brewery_id=brw_id, style_id=st_id, images=pic) db.session.add(b) db.session.commit() brw.styles.append(st) # This is to append brewery name to the beer name to search in ratebeer. brew_ind = brewery.lower().find("brew") if brew_ind == -1: brew_ind == "" beer_names.append(u''.join(nameDisplay).encode('utf-8')) else: brew_ind = u''.join(brewery[0:(brew_ind)-1]).encode('utf-8') temp = brew_ind + " " + u''.join(nameDisplay).encode('utf-8') beer_names.append(temp) return beer_names