Cocktail-DB/cocktail_list/views.py

91 lines
4.1 KiB
Python

from django.shortcuts import render,get_object_or_404,redirect
from .models import Cocktail,Ingredienti,Strumenti,Bicchieri
from .forms import CocktailForm
import random
# Create your views here.
def homepage(request):
lista_cocktail = Cocktail.objects.all()
context = {"lista_cocktail":lista_cocktail}
return render(request,"homepage.html",context)
def cocktail(request,nome_cocktail):
cocktail = get_object_or_404(Cocktail,nome_cocktail=nome_cocktail)
context = {"cocktail":cocktail}
return render(request,"cocktail.html",context)
def random_cocktail(request):
random_cocktail = Cocktail.objects.all()
number_of_cocktail = Cocktail.objects.all().count() # conto il numero di instanze dell'oggetto Cocktail
random_cocktail_list = random.randint(1,number_of_cocktail) # genero un numero casuale tra 1 e il numero di Cocktail presenti nel database
rand_cocktail = random.sample(list(random_cocktail),random_cocktail_list) # seleziona casualmente degli elementi univoci nel database
context = {"random_cocktail":rand_cocktail}
return render(request,"random_cocktail.html",context)
def strumenti_cocktail(request):
lista_strumenti = Strumenti.objects.all()
context = {"lista_strumenti":lista_strumenti}
return render(request,"strumenti.html",context)
# def strumento_views(request,nome_strumento):
# strumento = get_object_or_404(Strumenti,nome_strumento=nome_strumento)
# context = {"strumento":strumento}
# return render(request,"strumento_detail.html",context)
def bicchieri_cocktail(request):
lista_bicchieri = Bicchieri.objects.all()
context = {"lista_bicchieri":lista_bicchieri}
return render(request,"bicchieri.html",context)
# def bicchiere_views(request,nome_bicchiere):
# bicchiere = get_object_or_404(Strumenti,nome_bicchiere=nome_bicchiere)
# context = {"bicchiere":bicchiere}
# return render(request,"bicchiere_detail.html",context)
# def cerca(request):
# if "q" in request.GET:
# querystring = request.GET.get("q")
# if len(querystring) == 0:
# return redirect("cerca")
# ingrediente = Cocktail.objects.filter(ingredienti__ingrediente__icontains=querystring).order_by("-nome_cocktail")
# cocktail = Cocktail.objects.filter(nome_cocktail__icontains=querystring).order_by("-nome_cocktail")
# context = {"querystring":querystring,"cocktail":cocktail,"ingrediente":ingrediente}
# return render(request,"cerca.html",context)
# else:
# return render(request,"cerca.html")
def cerca(request):
if "q" in request.GET: # controllo se "q" é presente nella request di tipo get
querystring = request.GET.get("q")
if len(querystring) < 3: # verifico se la lunghezza di é minore di 3
return redirect("cerca") # se la lunghezza é minore di 3 reindirizzo alla pagina cerca
all_ingredients = Cocktail.objects.all()
searching_ingred = Cocktail.objects.none()
for one_ingredient in querystring.split(","):
searching_ingred = searching_ingred.union(searching_ingred, all_ingredients.filter(ingredienti__ingrediente__icontains=one_ingredient))
# ingrediente = Cocktail.objects.filter(ingredienti__ingrediente__icontains=querystring).order_by("-nome_cocktail")
cocktail = Cocktail.objects.filter(nome_cocktail__icontains=querystring).order_by("-nome_cocktail")
context = {"querystring":querystring,"cocktail":cocktail,"ingrediente":searching_ingred}
return render(request,"cerca.html",context)
else:
return render(request,"cerca.html")
def createCocktail(request):
if request.method == "POST":
form = CocktailForm(request.POST,request.FILES) # riempio il form
if form.is_valid(): # controllo se il form é valido
cocktail = form.save() # se il form risulta essere valido, salvo l'oggetto nel database
return redirect("cocktail", nome_cocktail=cocktail.nome_cocktail) # reindirizzo alla pagina del cocktail appena creato
else:
form = CocktailForm()
context = {"form":form}
return render(request,"crea_cocktail.html",context)