Add author selection form

This commit is contained in:
Pedro Rey Anca 2024-12-04 13:19:02 +01:00
parent aabd1c301a
commit c24608440f
Signed by: peprolinbot
GPG key ID: 053EA6E00116533A
4 changed files with 42 additions and 8 deletions

View file

@ -1,5 +1,5 @@
from django.forms import ModelForm, CharField, EmailField from django.forms import ModelForm, Form, CharField, EmailField, ModelChoiceField
from .models import Suggestion from .models import Suggestion, Author
class SuggestionForm(ModelForm): class SuggestionForm(ModelForm):
@ -10,5 +10,23 @@ class SuggestionForm(ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.fields['suggester_name'] = CharField(label='Tu nombre') self.fields['suggester_name'] = CharField(
self.fields['suggester_email'] = EmailField(label='Tu email') label='Tu nombre')
self.fields['suggester_name'].widget.attrs['placeholder'] = "Pepito Grillo"
self.fields['suggester_email'] = EmailField(
label='Tu email')
self.fields['suggester_email'].widget.attrs['placeholder'] = "pepitog@fakemail.com"
# Change labels to spanish
self.fields['text'].label = "Cita"
self.fields['text'].widget.attrs['placeholder'] = "¡Vamos que nos pilla el comunismo!"
self.fields['context'].label = "Contexto"
self.fields['context'].widget.attrs['placeholder'] = "Estaba tardando mucho en hacerle caso a Lázaro"
self.fields['author_name'].label = "Nombre de la persona que citas"
self.fields['author_name'].widget.attrs['placeholder'] = "Lázaro"
class AuthorSelectionForm(Form):
author = ModelChoiceField(
queryset=Author.objects.all(), empty_label="Selecciona un autor")

View file

@ -6,9 +6,10 @@ app_name = "lazaro_quotes"
urlpatterns = [ urlpatterns = [
path("", views.show_quote, name="show_quote"), path("", views.show_quote, name="show_quote"),
path("suggest", views.suggest_quote_form, name="suggest_quote_form"),
path("select_author", views.select_author_form, name="select_author_form"),
path("json", views.get_quote_json, name="get_quote_json"), path("json", views.get_quote_json, name="get_quote_json"),
path("all/json", views.get_all_quotes_json, name="get_all_quotes_json"), path("all/json", views.get_all_quotes_json, name="get_all_quotes_json"),
path("<str:author_slug>", views.show_quote, name="show_quote"), path("<str:author_slug>", views.show_quote, name="show_quote"),
path("<str:author_slug>/json", views.get_quote_json, name="get_quote_json"), path("<str:author_slug>/json", views.get_quote_json, name="get_quote_json")
path("suggest", views.suggest_quote_form, name="suggest_quote_form")
] ]

View file

@ -4,7 +4,7 @@ from django.forms.models import model_to_dict
from django.http import JsonResponse from django.http import JsonResponse
from .models import Quote, Suggester from .models import Quote, Suggester
from .forms import SuggestionForm from .forms import SuggestionForm, AuthorSelectionForm
def show_quote(request, author_slug=None): def show_quote(request, author_slug=None):
@ -37,6 +37,18 @@ def get_all_quotes_json(request):
return JsonResponse(result) 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): def suggest_quote_form(request):
if request.method == 'POST': if request.method == 'POST':
form = SuggestionForm(request.POST) form = SuggestionForm(request.POST)

View file

@ -59,8 +59,11 @@
aria-haspopup="true">Lázaro-aaS aria-haspopup="true">Lázaro-aaS
</a> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a class="dropdown-item nav-link" href="{% url 'lazaro_quotes:show_quote' %}">Frase <li><a class="dropdown-item nav-link" href="{% url 'lazaro_quotes:show_quote' %}">Cita
aleatoria</a></li> aleatoria</a></li>
<li><a class="dropdown-item nav-link"
href="{% url 'lazaro_quotes:select_author_form' %}">Seleccionar un autor de cita</a>
</li>
<li><a class="dropdown-item nav-link" <li><a class="dropdown-item nav-link"
href="{% url 'lazaro_quotes:suggest_quote_form' %}">Sugerir href="{% url 'lazaro_quotes:suggest_quote_form' %}">Sugerir
frases</a></li> frases</a></li>