· 5 years ago · May 27, 2020, 04:24 PM
1from django.shortcuts import render
2from .models import Recipes
3import requests
4from .api_dir.api_app import Api
5from .labels_dir.label import diet_tags, health_tags
6from .except_dir.exceptions import APIError, NotKnownQuery, InvalidKey, \
7 InvalidRecipeApiKey, LimitExceeding
8
9
10def home(request):
11 return render(request, 'search/home.html', {'title': 'Home'})
12
13def subsite(request):
14 return render(request, 'search/subsite.html', {'title': 'Subsite'})
15
16def results(request):
17 '''
18 def flip_order(request):
19 calories_sorting_order = request.GET.get('sort')
20 if calories_sorting_order is False:
21 calories_sorting_order = True
22 else:
23 calories_sorting_order = False
24 '''
25 calories_sorting_order = request.GET.get('sort')
26
27 query = request.GET.get('q')
28
29 dietLabels = diet_tags(request)
30 healthLabels = health_tags(request)
31
32 req = Api().ret_req()
33 results = req.search_recipe(query, healthLabels, dietLabels)
34 if results == -1:
35 return render(request, 'search/err.html', {'errorMessage': 'You have exceeded api limit, wait a few seconds.'})
36
37
38 if results == -2:
39 message = 'No matching recipes for: ' + str(query) + ' and filters: '
40 flag2 = []
41 for label in healthLabels:
42 flag2.append(label)
43 message += label + ', '
44
45 for label in dietLabels:
46 flag2.append(label)
47 message += label + ', '
48 if len(flag2):
49 return render(request, 'search/err.html', {'errorMessage': message})
50 else:
51 return render(request, 'search/err.html', {'errorMessage': message + "None"})
52
53 if calories_sorting_order:
54 context = {
55 'database': sorted(req.search_recipe(query), key = lambda recipe: recipe.caloriesPer100), # Recipes.objects.all()
56 'dietLabels': dietLabels,
57 'healthLabels': healthLabels,
58 }
59 else:
60 context = {
61 'database': results, # Recipes.objects.all()
62 'dietLabels': dietLabels,
63 'healthLabels': healthLabels,
64 }
65
66
67
68 return render(request, 'search/results.html', context)