예제 #1
0
  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()
예제 #2
0
  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)
예제 #3
0
파일: seed.py 프로젝트: DanielleRenee/Whalz
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()
예제 #4
0
  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."})
예제 #5
0
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)
예제 #6
0
 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)
예제 #7
0
  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'))
예제 #8
0
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()
예제 #9
0
파일: server.py 프로젝트: Adriem/BB062015
def post_beer():
    print request.get_json()
    Beer.parse_dir(request.get_json()).save()
    return "Done"
예제 #10
0
파일: server.py 프로젝트: Adriem/BB062015
def list_beer():
    return Beer.jsonify()
예제 #11
0
파일: server.py 프로젝트: Adriem/BB062015
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()
예제 #12
0
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",
예제 #13
0
  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)