aboutsummaryrefslogtreecommitdiff
path: root/app.py
blob: f772b32473dcd37ab20a2548aa1a4adbe6bc7376 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
from flask import Flask
from flask import render_template
from flask import redirect
from flask import url_for
import json
import random
import re

app = Flask(__name__)

with open("./data/beers.json") as beers_json:
    beer = json.loads(beers_json.read())

with open('./data/brewery_names.json', 'w') as f:
    brewery_names = json.load(f)


@app.route('/')
def index():
    return render_template('Homepage.jinja2')


@app.route('/random')
def random_beer():
    rando = random.choice(list(beer.keys())).split('-')
    return redirect(url_for('get_beer_details', brewery_id=rando[0], beer_id=rando[1]))


@app.route('/brewery/<brewery_id>/')
def get_brewery_list(brewery_id):
    return json.dumps(find_beers_from_brewery(brewery_id))


@app.route('/brewery/<brewery_id>/<beer_id>')
def get_beer_details(brewery_id, beer_id):
    beer_result, brewery_name = beer_lookup(brewery_id, beer_id)
    beerinfo = BeerInfo(beer_result, brewery_name)
    attrs = ['Burnt', 'Bready', 'Malty', 'Dark', 'Floral', 'Hoppy', 'Dank',
             'Grassy', 'Boozy', 'Warming', 'Bitter', 'Wheaty', 'Sour',
             'Barnyardy', 'Woody', 'Smoky', 'Roasty', 'Yeasty', 'Sweet',
             'Juicy', 'Light', 'Thin', 'Spicy', 'Dry', 'Fruity', 'Herbal',
             'Salty']
    return render_template('beerpage.jinja2', beer_data=beerinfo, attrs=attrs)


def beer_lookup(brewery_id, beer_id):
    item_id = brewery_id + "-" + beer_id
    try:
        beer_result = beer[item_id]
        return beer_result, brewery_names[brewery_id]
    except:
        return None


def find_beers_from_brewery(brewery_id):
    pattern = re.compile('^' + brewery_id + '-.*')
    beers = [value for key, value in beer.items() if pattern.match(key)]
    return beers


class BeerInfo(object):

    def __init__(self, item_json, brewery_name):
        self.parent_style = item_json[1][1]
        self.base_style = item_json[1][0]
        self.name = item_json[0]
        self.abv = item_json[2]
        self.brewer = brewery_name


class Brewery(object):

    def __init__(self, breweryid):
        self.id = breweryid
        self.brews = []

    def add_brew(self, brew):
        self.brews.append(brew)


if __name__ == '__main__':
    app.config.update(TEMPLATES_AUTO_RELOAD=True)
    app.run(host='0.0.0.0')