91 lines
4.1 KiB
Python
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)
|
|
|