-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
161 lines (136 loc) · 5.39 KB
/
app.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
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
import os
from flask import Flask, render_template, redirect, request, url_for, flash
from flask_pymongo import PyMongo, pymongo
from bson.objectid import ObjectId
from os import path
if path.exists("env.py"):
import env
app = Flask(__name__)
MONGO_URI = os.environ.get('MONGO_URI')
app.config["MONGO_URI"] = MONGO_URI
app.config['MONGO_URI'] = MONGO_URI
mongo = PyMongo(app)
# Get recipe from MongoDB
@app.route('/')
@app.route('/get_recipe')
def get_recipe():
return render_template("recipes.html", recipe=mongo.db.recipe.find())
# Get description from mongoDB
@app.route('/recipe_description/<recipe_id>')
def recipe_description(recipe_id):
recipe = mongo.db.recipe.find({"_id": ObjectId(recipe_id)})
return render_template('recipe_description.html',recipe = recipe )
# User can add recipe
@app.route('/add_recipe')
def add_recipe():
return render_template('add_recipe.html', cuisine=mongo.db.cuisine.find())
# Insert recipe to the MongoDb
@app.route('/insert_recip', methods=['POST'])
def insert_recip():
recipe = mongo.db.recipe
recipe.insert_one(request.form.to_dict())
return redirect(url_for('get_recipe'))
# Edit Recipe
@app.route('/edit_recipe/<recipe_id>')
def edit_recipe(recipe_id):
the_recipe = mongo.db.recipe.find_one({"_id": ObjectId(recipe_id)})
all_cuisine = mongo.db.cuisine.find()
return render_template('edit_recipe.html', recipe=the_recipe, cuisine=all_cuisine)
# Update Recipe
@app.route('/update_recipe/<recipe_id>', methods=["POST"])
def update_recipe(recipe_id):
recipe = mongo.db.recipe
recipe.update({'_id': ObjectId(recipe_id)},
{
'recipe_name':request.form.get('recipe_name'),
'user_name':request.form.get('user_name'),
'cuisine_name':request.form.get('cuisine_name'),
'ingredients':request.form.get('ingredients'),
'method':request.form.get('method'),
'cooking_time':request.form.get('cooking_time'),
'recipe_description':request.form.get('recipe_description'),
'recipe_image_url': request.form.get('recipe_image_url')
})
return redirect(url_for('get_recipe'))
# Delete recipe
@app.route('/delete_recipe/<recipe_id>')
def delete_recipe(recipe_id):
mongo.db.recipe.remove({'_id': ObjectId(recipe_id)})
return redirect(url_for('get_recipe'))
# Get cusine from mongoDB
@app.route('/get_cuisine')
def get_cuisine():
return render_template("cuisine.html", cuisine=mongo.db.cuisine.find())
@app.route('/cusine/<cusines_name>')
def cusine(cusines_name):
cuisine=mongo.db.cuisine.find({'_id': ObjectId(cusines_name)})
recipe=mongo.db.recipe.find()
return render_template('found_recipes.html',recipe = recipe, cuisine = cuisine)
# User can add cusine
@app.route('/add_cusine')
def add_cusine():
return render_template('add_cusine.html', cuisine=mongo.db.cuisine.find())
# Insert cuisine to MongoDB
@app.route('/insert_cusine', methods=['POST'])
def insert_cusine():
cuisine = mongo.db.cuisine
cuisine.insert_one(request.form.to_dict())
return redirect(url_for('get_cuisine'))
# Edit cusine
@app.route('/edit_cuisine/<cusine_id>')
def edit_cuisine(cusine_id):
the_cuisine = mongo.db.cuisine.find_one({"_id": ObjectId(cusine_id)})
all_cuisine = mongo.db.recipe.find()
return render_template('edit_cuisine.html', cuisine=the_cuisine, recipe=all_cuisine)
# Update cuisine
@app.route('/update_cuisine/<cuisine_id>', methods=["POST"])
def update_cuisine(cuisine_id):
cuisine = mongo.db.cuisine
cuisine.update({'_id': ObjectId(cuisine_id)},
{
'cuisine_name':request.form.get('cuisine_name'),
'cuisine_description':request.form.get('cuisine_description'),
'cuisine_image':request.form.get('cuisine_image')
})
return redirect(url_for('get_cuisine'))
# Delete cuisine
@app.route('/delete_cuisine/<cuisine_id>')
def delete_cuisine(cuisine_id):
mongo.db.cuisine.remove({'_id': ObjectId(cuisine_id)})
return redirect(url_for('get_cuisine'))
# Search for recipes will preload options for cuisines
@app.route('/search_recipe')
def search_recipe():
the_recipe = mongo.db.recipe.find()
all_cuisine = mongo.db.cuisine.find()
return render_template("search_recipe.html", cuisine=all_cuisine, recipe=the_recipe)
# Search recipes
@app.route('/search_by_name', methods=['GET', 'POST'])
def search_by_name():
search_term = []
if request.method == 'POST':
search_term = request.form['recipe_name']
return render_template('found_recipes.html', recipe=mongo.db.recipe.find_one({'$text': {'$search': search_term }}))
# Search cuisines
@app.route('/search_cuisine/<cuisine_name>', methods=['GET''POST'])
def search_cuisine(cuisine_name):
if request.method == 'POST':
search_term = request.form.get('cuisine_name')
recipe = mongo.db.recipe.find({'recipe' : search_term})
print(recipe)
return render_template("found_cuisines.html", recipe=recipe)
# Search ingredients
@app.route('/search_by_ingredients', methods=['GET', 'POST'])
def search_by_ingredients():
search_term = []
if request.method == 'POST':
search_term = request.form['ingredients']
return render_template('found_ingredients.html', recipe=mongo.db.recipe.find_one({'$text': {'$search': search_term }}))
# Dashboard charts
@app.route('/dashboard')
def dashboard():
return render_template('dashboard.html')
if __name__ == '__main__':
app.run(host=os.environ.get('IP'),
port=int(os.environ.get('PORT')),
debug=True)