From 2f391fd41b7b1f6d56d0894dfbd66119b77a2062 Mon Sep 17 00:00:00 2001 From: Javier Daza Date: Sat, 21 Oct 2023 19:08:36 -0500 Subject: [PATCH 1/7] feat: Formulario y vista para proponer una nueva charla --- temii/talks/admin.py | 3 ++- temii/talks/forms.py | 18 ++++++++++++++++++ temii/talks/models.py | 19 +++++++++++++++++-- temii/talks/urls.py | 4 ++++ temii/talks/views.py | 21 +++++++++++++++++++++ temii/templates/base.html | 8 ++++++++ temii/templates/talks/talk_form.html | 23 +++++++++++++++++++++++ temii/templates/talks/talk_thanks.html | 21 +++++++++++++++++++++ 8 files changed, 114 insertions(+), 3 deletions(-) create mode 100644 temii/talks/forms.py create mode 100644 temii/templates/talks/talk_form.html create mode 100644 temii/templates/talks/talk_thanks.html diff --git a/temii/talks/admin.py b/temii/talks/admin.py index 27fae27f..ed0c7e9a 100644 --- a/temii/talks/admin.py +++ b/temii/talks/admin.py @@ -5,5 +5,6 @@ @admin.register(Talk) class TalkAdmin(admin.ModelAdmin): - list_display = ["name"] + list_display = ["name", "user", "months"] search_fields = ["name"] + list_filter = ["level", "precense", "language"] diff --git a/temii/talks/forms.py b/temii/talks/forms.py new file mode 100644 index 00000000..3a28b71c --- /dev/null +++ b/temii/talks/forms.py @@ -0,0 +1,18 @@ +from django import forms + +from .models import Talk + + +class NewTalkForm(forms.ModelForm): + class Meta: + model = Talk + fields = [ + "name", + "description", + "level", + "language", + "timezone", + "comments", + "precense", + "months", + ] diff --git a/temii/talks/models.py b/temii/talks/models.py index ae8953e2..78df7af5 100644 --- a/temii/talks/models.py +++ b/temii/talks/models.py @@ -23,10 +23,25 @@ class InPerson(models.IntegerChoices): description = models.CharField(_("Description"), max_length=300) level = models.PositiveIntegerField(_("Level"), choices=Level.choices, default=Level.BEGINNER) language = models.CharField(_("Language"), max_length=2, choices=Language.choices, default=Language.ES) - timezone = models.CharField(_("Timezone"), max_length=60) + timezone = models.CharField( + _("Timezone"), + max_length=60, + help_text=_( + "Timezone of the place you are located. E.g., " + "Colombia (UTC-5), Argentina or Chile (UTC-3), Mexico (UTC-6), etc." + ), + ) comments = models.CharField(_("Comments"), max_length=300) precense = models.PositiveIntegerField(_("Precense"), choices=InPerson.choices, default=InPerson.ON_SITE) - months = models.CharField(_("Months"), max_length=100, blank=True) + months = models.CharField( + _("Months"), + max_length=100, + blank=True, + help_text=_( + "Please write your time availability in months." + "The more specific, the better. E.g., October and November, any day after 6pm." + ), + ) class Meta: verbose_name = _("Talk") diff --git a/temii/talks/urls.py b/temii/talks/urls.py index a661a00a..6a830929 100644 --- a/temii/talks/urls.py +++ b/temii/talks/urls.py @@ -1,7 +1,11 @@ from django.urls import path from django.views.generic import TemplateView +from .views import talk_create_view + app_name = "talks" urlpatterns = [ path("", TemplateView.as_view(template_name="pages/about.html"), name="talks"), + path("~create/", view=talk_create_view, name="create"), + path("thanks/", TemplateView.as_view(template_name="talks/talk_thanks.html"), name="thanks"), ] diff --git a/temii/talks/views.py b/temii/talks/views.py index e69de29b..0b791839 100644 --- a/temii/talks/views.py +++ b/temii/talks/views.py @@ -0,0 +1,21 @@ +from django.contrib.auth.mixins import LoginRequiredMixin +from django.urls import reverse_lazy +from django.views.generic.edit import CreateView + +from .forms import NewTalkForm +from .models import Talk + + +class TalkCreateView(LoginRequiredMixin, CreateView): + """Propose a new talk.""" + + model = Talk + form_class = NewTalkForm + success_url = reverse_lazy("talks:thanks") + + def form_valid(self, form): + form.instance.user = self.request.user + return super().form_valid(form) + + +talk_create_view = TalkCreateView.as_view() diff --git a/temii/templates/base.html b/temii/templates/base.html index a81efabb..9b905ca8 100644 --- a/temii/templates/base.html +++ b/temii/templates/base.html @@ -53,6 +53,11 @@ + {% if request.user.is_staff %} + + {% endif %} @@ -60,6 +65,9 @@ + {% endif %} {% if request.user.is_authenticated %}