From 28ee93d735879dbf07c9a3549712f35bd8832da9 Mon Sep 17 00:00:00 2001 From: Ben Burwell Date: Sun, 28 Jul 2019 18:34:21 -0400 Subject: Typeahead and search --- app.py | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) (limited to 'app.py') diff --git a/app.py b/app.py index d6e4461..3c26ed2 100644 --- a/app.py +++ b/app.py @@ -1,8 +1,4 @@ -from flask import Flask -from flask import render_template -from flask import redirect -from flask import request -from flask import url_for +from flask import Flask, render_template, redirect, request, url_for, jsonify from utils import get_closest, translate_to_attr, get_style_preds, translate_to_style import json import random @@ -13,11 +9,17 @@ app = Flask(__name__) with open("./data/beer_info_small.json") as beers_json: beer = json.loads(beers_json.read()) + beer_ids = {} + for long_id, val in beer.items(): + beer_ids[val[0]] = long_id.split('-')[1] beers_for_random = [b for b in beer if beer[b][3] > 75] print(len(beers_for_random)) with open('./data/brewery_names.json') as f: brewery_names = json.load(f) + brewery_ids = {} + for id, name in brewery_names.items(): + brewery_ids[name] = id ATTRS = ['Barnyardy', 'Bitter', 'Boozy', @@ -58,11 +60,6 @@ def random_beer(): return redirect(url_for('get_beer_details', brewery_id=rando[0], beer_id=rando[1])) -@app.route('/brewery//') -def get_brewery_list(brewery_id): - return json.dumps(find_beers_from_brewery(brewery_id)) - - @app.route('/brewery//', methods=['GET', 'POST']) def get_beer_details(brewery_id, beer_id): result, brewery_name = beer_lookup(brewery_id, beer_id) @@ -110,6 +107,20 @@ def get_beer_details(brewery_id, beer_id): return render_template('beerpage.jinja2', **kwargs) +@app.route('/all_beers.json') +def get_all_beers(): + return jsonify([ brewery_names[k.split('-')[0]]+' — '+v[0] for k, v in beer.items()]) + +@app.route('/search', methods=['POST']) +def search(): + q = request.form.get('q') + if not q: + return redirect('/') + brewery, beer_name = q.split(' — ') + brewery_id = brewery_ids[brewery] + beer_id = beer_ids[beer_name] + return redirect(url_for('get_beer_details', beer_id=beer_id, brewery_id=brewery_id)) + def beer_lookup(brewery_id, beer_id=None): if beer_id: -- cgit v1.2.3