-
Notifications
You must be signed in to change notification settings - Fork 0
/
views.py
49 lines (43 loc) · 1.72 KB
/
views.py
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
from . import app, mongo
from server.utils.utils import action_success, action_fail, check_required, get_synonyms
from flask import request,render_template,redirect,url_for
from functools import wraps
def form_require(required_args):
def decorator(f):
@wraps(f)
def decorated_function(*args, **kwargs):
missing_fields = check_required(required_args, request.form)
if missing_fields:
return action_fail({"missing_fields" : missing_fields}, 422,
message="required fields are missing")
else:
return f(*args, **kwargs)
return decorated_function
return decorator
def url_require(required_args):
def decorator(f):
@wraps(f)
def decorated_function(*args, **kwargs):
missing_fields = check_required(required_args, request.url)
if missing_fields:
return action_fail({"missing_fields" : missing_fields}, 422,
message="required fields are missing")
else:
return f(*args, **kwargs)
return decorated_function
return decorator
@app.route("/", methods = [ 'GET' ])
def home():
return render_template('base.html')
@app.route("/<string:word>", defaults={'letter': None}, methods = [ 'GET' ])
@app.route("/<string:word>/<string:letter>", methods = [ 'GET' ])
def synonyms(word, letter):
syns = mongo.db.synonyms.find_one({'word' : word})
if syns:
syns = syns['synonyms']
else:
syns = get_synonyms(word)
mongo.db.synonyms.insert({'word' : word, 'synonyms' : list(syns)})
if letter:
syns = filter(lambda word: not letter in word, syns)
return action_success(sorted(syns))