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