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)