caFICteria-aaS/web/lazaro_quotes/views.py

59 lines
1.8 KiB
Python

from django.shortcuts import render, redirect
from django.contrib import messages
from django.forms.models import model_to_dict
from django.http import JsonResponse
from .models import Quote, Suggester
from .forms import SuggestionForm
def show_quote(request, author_slug=None):
if author_slug is None:
quote = Quote.objects.order_by('?').first()
else:
quote = Quote.objects.filter(
author__slug=author_slug).order_by('?').first()
return render(request, 'lazaro_quotes/show_quote.html', {"quote": quote})
def get_quote_json(request, author_slug=None):
if author_slug is None:
quote = Quote.objects.order_by('?').first()
else:
quote = Quote.objects.filter(
author__slug=author_slug).order_by('?').first()
return JsonResponse(quote.as_dict())
def get_all_quotes_json(request):
quotes = Quote.objects.all()
result = {}
for i, quote in enumerate(quotes):
result[i] = quote.as_dict()
return JsonResponse(result)
def suggest_quote_form(request):
if request.method == 'POST':
form = SuggestionForm(request.POST)
if form.is_valid():
suggester, created = Suggester.objects.get_or_create(defaults={"name": form.cleaned_data['suggester_name']},
email=form.cleaned_data['suggester_email'])
suggestion = form.save(commit=False)
suggestion.suggester = suggester
suggestion.save()
messages.success(
request, "Tu sugestión se ha enviado correctamente")
return redirect('lazaro_quotes:show_quote')
else:
form = SuggestionForm()
return render(request, 'main/show_form.html', {'form_header': '¡Mándanos alguna frase celebre/graciosa que hayas escuchado en la FIC!', 'form': form})