From c24608440fd5afdf757f9789c64cd8970af69aaa Mon Sep 17 00:00:00 2001 From: Pedro Rey Anca Date: Wed, 4 Dec 2024 13:19:02 +0100 Subject: [PATCH] Add author selection form --- web/lazaro_quotes/forms.py | 26 ++++++++++++++++++---- web/lazaro_quotes/urls.py | 5 +++-- web/lazaro_quotes/views.py | 14 +++++++++++- web/main/templates/main/_items/navbar.html | 5 ++++- 4 files changed, 42 insertions(+), 8 deletions(-) diff --git a/web/lazaro_quotes/forms.py b/web/lazaro_quotes/forms.py index 13b4ee1..59de4bb 100644 --- a/web/lazaro_quotes/forms.py +++ b/web/lazaro_quotes/forms.py @@ -1,5 +1,5 @@ -from django.forms import ModelForm, CharField, EmailField -from .models import Suggestion +from django.forms import ModelForm, Form, CharField, EmailField, ModelChoiceField +from .models import Suggestion, Author class SuggestionForm(ModelForm): @@ -10,5 +10,23 @@ class SuggestionForm(ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.fields['suggester_name'] = CharField(label='Tu nombre') - self.fields['suggester_email'] = EmailField(label='Tu email') + self.fields['suggester_name'] = CharField( + 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") diff --git a/web/lazaro_quotes/urls.py b/web/lazaro_quotes/urls.py index 85467e5..93c8edf 100644 --- a/web/lazaro_quotes/urls.py +++ b/web/lazaro_quotes/urls.py @@ -6,9 +6,10 @@ app_name = "lazaro_quotes" urlpatterns = [ 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("all/json", views.get_all_quotes_json, name="get_all_quotes_json"), path("", views.show_quote, name="show_quote"), - path("/json", views.get_quote_json, name="get_quote_json"), - path("suggest", views.suggest_quote_form, name="suggest_quote_form") + path("/json", views.get_quote_json, name="get_quote_json") ] diff --git a/web/lazaro_quotes/views.py b/web/lazaro_quotes/views.py index 41a7aec..cb8c40b 100644 --- a/web/lazaro_quotes/views.py +++ b/web/lazaro_quotes/views.py @@ -4,7 +4,7 @@ from django.forms.models import model_to_dict from django.http import JsonResponse from .models import Quote, Suggester -from .forms import SuggestionForm +from .forms import SuggestionForm, AuthorSelectionForm def show_quote(request, author_slug=None): @@ -37,6 +37,18 @@ def get_all_quotes_json(request): 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) diff --git a/web/main/templates/main/_items/navbar.html b/web/main/templates/main/_items/navbar.html index 9c12c19..ceabac4 100644 --- a/web/main/templates/main/_items/navbar.html +++ b/web/main/templates/main/_items/navbar.html @@ -59,8 +59,11 @@ aria-haspopup="true">Lázaro-aaS