71 lines
2.3 KiB
Python
71 lines
2.3 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, AuthorSelectionForm
|
|
|
|
|
|
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 select_author_form(request):
|
|
if request.method == 'POST':
|
|
form = AuthorSelectionForm(request.POST)
|
|
|
|
if form.is_valid():
|
|
return redirect('lazaro_quotes:show_quote', form.cleaned_data['author'].slug)
|
|
else:
|
|
form = AuthorSelectionForm()
|
|
|
|
return render(request, 'main/show_form.html', {'form_header': 'Selecciona una persona para obtener una cita suya', 'form': form})
|
|
|
|
|
|
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})
|