def post(self): email = get_user_email() if not email: self.redirect(users.create_login_url('/account')) # query ndb to get the current user beerUser = BeerUser.get_user_profile(email) if not beerUser.cart: beerUser.cart = ShoppingCart() beerUser.cart.price = "0.00" beerUser.cart.contents = {} data = json.loads(self.request.body) beer_id = int(data["beerID"]) quantity = int(data["quant"]) price = float(Beer.query(Beer.beerid == beer_id).fetch(1)[0].price) * quantity # check negative quantity if quantity < 0: return beerUser.cart.contents[beer_id] = quantity beerUser.cart.price = str(float(beerUser.cart.price) + price) beerUser.put()
def get(self): email = get_user_email() user_is_admin = is_user_admin() beers_ndb = memcache.get('beerslist') if beers_ndb is None: beers_ndb = Beer.query().fetch() memcache.add('beerslist', beers_ndb) else: logging.info('beers are in memcache lets goooooo') if email: beerUser = BeerUser.get_user_profile(email) template_params = { 'balance': "${:.2f}".format(beerUser.balance), 'user_email': email, 'user_is_admin': user_is_admin, 'login_url': users.create_login_url('/beer'), 'logout_url': users.create_logout_url('/home'), 'beers' : beers_ndb } else: template_params = { 'user_email': email, 'user_is_admin': user_is_admin, 'login_url': users.create_login_url('/beer'), 'logout_url': users.create_logout_url('/home'), 'beers' : beers_ndb } render_template(self, 'beer.html', templatevalues=template_params)
def load_beer(): """ Load beer from allbeerdata.json into database. >>> beerz = json.load(open('seed_data/allbeerdata.json')) >>> len(beerz) 6300 >>> name = beerz[1]['name_display'] >>> name u'1916 Irish Stout' """ beerz = json.load(open('seed_data/allbeerdata.json')) beerz_len = len(beerz) # json.load(open(‘file.json’)) loads JSON from a file # beerz is a python list # there are 6300 beers in beerz print "Fill er up! Beers are being loaded." # can only add 49 beers to db right now, because I haven't split the file on the dictionaries. # go back and change later! # really need to be getting the brewey back as well. for i in range(0, 49): name = beerz[i]['name_display'] abv = beerz[i]['abv'] beer_code = beerz[i]['beer_id'] # description = beerz[i]['description'] ibu = beerz[i]['ibu'] # labels = beerz[i]['labels'] # website = beerz[i]['website'] style_id = beerz[i]['style_id'] beer_variation = beerz[i]['beer_variation'] beer_variation_id = beerz[i]['beer_variation_id'] year = beerz[i]['year'] # add the beer object as a beer in the beer table beer = Beer( abv=abv, beer_code=beer_code, beer_variation=beer_variation, beer_variation_id=beer_variation_id, # description=description, ibu=ibu, # labels=labels, # website=website, style_id=style_id, year=year, name=name, ) db.session.add(beer) # Once we're done, we should commit our work db.session.commit()
def post(self): email = get_user_email() if not email: self.redirect(users.create_login_url('/account')) # query ndb to get the current user beerUser = BeerUser.get_user_profile(email) cart = beerUser.cart.contents address = self.request.get("addressTxt") beers_in_cart = [] if not address: render_template(self, "ordercomplete.html", {"msg":"Invalid delivery address!"}) return if len(cart) != 0: order_string = "" totalcost=0 # Build the order object and save it to the ndb new_order = BeerOrder() for beer in cart: ndb_beer = Beer.query(Beer.beerid == int(beer)).fetch(1)[0] totalcost += int(cart[beer]) * float(ndb_beer.price) quantity = cart[str(ndb_beer.beerid)] if quantity > 0: order_string += "{!s}x {!s}\n".format(quantity,ndb_beer.product) if totalcost > beerUser.balance: render_template(self, "ordercomplete.html", {"msg":"Insufficient funds."}) return new_order.items = order_string new_order.priceSum = totalcost new_order.address = address new_order.status = "Verifying" new_order.orderedBy = email new_order.put() # save the address for the user beerUser.address = address beerUser.balance = beerUser.balance - new_order.priceSum #clear their shopping cart beerUser.cart = ShoppingCart() beerUser.cart.price = "0.00" beerUser.cart.contents = {} beerUser.put() mail.send_mail('*****@*****.**', email, 'Order Verifying', 'You have successfully placed a beer order! Your order will be verified shortly and completed! Thanks!') render_template(self, "ordercomplete.html", {"msg":"Your order has been placed."}) else: render_template(self, "ordercomplete.html",{"msg":"Shopping cart is empty."})
def newBeer(beerType_id): if 'username' not in login_session: return redirect('/login') if request.method == 'POST': addBeer = Beer(name=request.form['name'], description=request.form['description'], type_id=beerType_id) user_id = login_session['user_id'] session.add(addBeer) session.commit() return redirect(url_for('showBeers', beerType_id=beerType_id)) else: return render_template('newBeer.html', beerType_id=beerType_id)
def get(self): email = get_user_email() user_is_admin = is_user_admin() beerUser = BeerUser.get_user_profile(email) beers_ndb = Beer.query().fetch() template_params = { #'balance': "${:.2f}".format(beerUser.balance), 'user_email': email, 'user_is_admin': user_is_admin, 'login_url': users.create_login_url('/beer'), 'logout_url': users.create_logout_url('/home'), 'beers' : sorted(beers_ndb, key = lambda beer: beer["price"]) } render_template(self, 'beer.html', templatevalues=template_params)
def get(self): email = get_user_email() user_is_admin = is_user_admin() totalcost = 0.0 if email: beerUser = BeerUser.get_user_profile(email) if not beerUser.cart: beerUser.cart = ShoppingCart() beerUser.cart.price = "0.00" beerUser.cart.contents = {} beerUser.put() cart = beerUser.cart.contents beers_in_cart = [] if len(cart) != 0: for beer in cart: ndb_beer = Beer.query(Beer.beerid == int(beer)).fetch(1)[0] totalcost += int(cart[beer]) * float(ndb_beer.price) beers_in_cart.append({ "beerid":beer, "brewery":ndb_beer.brewery, "product":ndb_beer.product, "price":ndb_beer.price, "quantity":cart[beer] }) #beers_in_cart.append(Beer.query(Beer.beerid == int(beer)).fetch(1)[0]) #quantities.append(cart[beer]) template_params={ 'balance': "${:.2f}".format(beerUser.balance), 'user_email': email, 'login_url': users.create_login_url('/home'), 'logout_url': users.create_logout_url('/home'), 'user_is_admin': user_is_admin, "savedAddress":beerUser.address, "beers":beers_in_cart, "total":'${:.2f}'.format(totalcost) } render_template(self, 'order.html', template_params) else: self.redirect(users.create_login_url('/order'))
def load_beer(): """Load beer from allbeerdata.json into database.""" print "Fill er up! Beers are being loaded." for i in range(0, 6300): name = beerz[i]['name_display'] abv = beerz[i]['abv'] beer_code = beerz[i]['beer_id'] description = beerz[i]['description'] ibu = beerz[i]['ibu'] labels = beerz[i]['labels'] website = beerz[i]['website'] style_id = beerz[i]['style_id'] beer_variation = beerz[i]['beer_variation'] beer_variation_id = beerz[i]['beer_variation_id'] year = beerz[i]['year'] # add the beer object as a beer in the beer table beer = Beer( abv=abv, beer_code=beer_code, beer_variation=beer_variation, beer_variation_id=beer_variation_id, description=description, ibu=ibu, labels=labels, website=website, style_id=style_id, year=year, name=name, ) db.session.add(beer) # Once we're done, we should commit our work db.session.commit()
def post_beer(): print request.get_json() Beer.parse_dir(request.get_json()).save() return "Done"
def list_beer(): return Beer.jsonify()
from flask import Flask, request from flask.ext.cors import CORS from model import Beer app = Flask(__name__) cors = CORS(app, resources=r"/api/*", allow_headers="Content-Type") # app.config['CORS_HEADERS'] = 'Content-Type' @app.route("/api/beers", methods=["GET"]) def list_beer(): return Beer.jsonify() @app.route("/api/beer", methods=["POST"]) def post_beer(): print request.get_json() Beer.parse_dir(request.get_json()).save() return "Done" if __name__ == "__main__": if len(Beer.objects) == 0: Beer.populate() app.run()
userOne = User(name="Cousin Luigi", email="*****@*****.**", picture=4) session.add(userOne) session.commit() # Add lager beer type beerType1 = BeerType(type="Lager", user_id=1) session.add(beerType1) session.commit() # Add lagers beer1 = Beer(name="5 Points", description="Hoppy beer, with a good head, from London", type_id=beerType1.id, user_id=userOne.id) session.add(beer1) session.commit() beer2 = Beer(name="Hell's Lager", description="From Camden brewery, popular lager for good reason", type_id=beerType1.id, user_id=userOne.id) session.add(beer2) session.commit() beer3 = Beer( name="Meantime Lager",
def get(self): # ensure all the beers are part of the ndb database. If they aren't, add them if len(Beer.query().fetch()) == 0: for beer in beers: ndbBeer = Beer() ndbBeer.beerid = int(beer['id']) ndbBeer.brewery = beer['brewery'] ndbBeer.product = beer['product'] ndbBeer.style = beer['style'] ndbBeer.abv = float(beer['abv']) ndbBeer.price = beer['price'] ndbBeer.key = ndb.Key('Beer', beer['id']) ndbBeer.put() email = get_user_email() user_is_admin = is_user_admin() if email: beerUser = BeerUser.get_user_profile(email) page_params = { 'balance': "${:.2f}".format(beerUser.balance), 'user_email': email, 'user_is_admin': user_is_admin, 'login_url': users.create_login_url('/home'), 'logout_url': users.create_logout_url('/home') } else: page_params = { 'user_email': email, 'user_is_admin': user_is_admin, 'login_url': users.create_login_url('/home'), 'logout_url': users.create_logout_url('/home') } render_template(self, 'home.html', page_params)