app.py 2.1 KB
Newer Older
Dylan Jones's avatar
Dylan Jones committed
1
from flask import Flask, redirect, jsonify, abort
Dylan Jones's avatar
no slug    
Dylan Jones committed
2

Dylan Jones's avatar
Dylan Jones committed
3
from where.model.field_types import FieldType
4
from where.model.sa import Category, Point, Field, with_session
Dylan Jones's avatar
app.py    
Dylan Jones committed
5
6
7

app = Flask(__name__)

8

Dylan Jones's avatar
app.py    
Dylan Jones committed
9
10
@app.route('/')
def index():
Dylan Jones's avatar
no slug    
Dylan Jones committed
11
12
13
14
15
16
17
18
19
20
21
22
    return """
<head>
</head>
<body>
    <h1>W H E R E</h1>
    <p>This is the WHERE project.</p>
    <a href='/test_data'>Click here to nuke the database and make it all be test data.</a>
</body>
    """


@app.route('/test_data')
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
@with_session
def test_data(session):
    # session = Session()
    session.query(Point).delete()
    session.query(Field).delete()
    session.query(Category).delete()
    # Water Fountain, the class.
    wf = Category()
    wf.name = "Water Fountain"
    wf.icon = "https://karel.pw/water.png"
    session.add(wf)
    session.commit()
    # coldness
    cd = Field()
    cd.name = "Coldness"
    cd.slug = "coldness"
    cd.type = FieldType.RATING
    cd.category_id = wf.id
    # filler
    fl = Field()
    fl.slug = "bottle_filler"
    fl.name = "Has Bottle Filler"
    fl.type = FieldType.BOOLEAN
    fl.category_id = wf.id
    session.add(cd)
    session.add(fl)
    session.commit()
    # an actual instance!
    fn = Point()
    fn.name = None
    fn.lat = 38.829791
    fn.lon = -77.307043
    # fn.category_id = wf.id
    fn.category = wf
    fn.parent_id = None
    fn.attributes = {
        "coldness": {
            "num_reviews": 32,
            "average_rating": 0.5
        },
        "bottle_filler": {
            "value": True
Dylan Jones's avatar
Dylan Jones committed
65
        }
66
67
68
69
    }
    session.add(fn)
    session.commit()
    return redirect('/')
Dylan Jones's avatar
Dylan Jones committed
70
71
72


@app.route('/category/<id>')
73
74
75
76
77
78
79
@with_session
def get_category(session, id):
    result = session.query(Category).filter_by(id=id).first()
    if result:
        return jsonify(result.as_json())
    else:
        abort(404)
Dylan Jones's avatar
Dylan Jones committed
80
81
82


@app.route('/point/<id>')
83
84
85
86
87
88
89
@with_session
def get_point(session, id):
    result = session.query(Point).filter_by(id=id).first()
    if result:
        return jsonify(result.as_json())
    else:
        abort(404)
Dylan Jones's avatar
app.py    
Dylan Jones committed
90

91
92
93
94
95
@app.route('/point', methods=['POST'])
@with_session
def query_point():
    pass
        
Dylan Jones's avatar
app.py    
Dylan Jones committed
96
97
98

if __name__ == '__main__':
    app.run()