From c150ab6c8332bc813b07573a21d44818da0c65d8 Mon Sep 17 00:00:00 2001 From: Tom Teichler <tom.teichler@teckids.org> Date: Sun, 20 Feb 2022 23:23:43 +0100 Subject: [PATCH] Link accepted terms to registration --- .../migrations/0010_term_confirmation_text.py | 19 ++++++++++++++++ .../0011_registration_accepted_terms.py | 18 +++++++++++++++ aleksis/apps/paweljong/models.py | 6 +++++ aleksis/apps/paweljong/views.py | 22 +++++++++++++------ 4 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 aleksis/apps/paweljong/migrations/0010_term_confirmation_text.py create mode 100644 aleksis/apps/paweljong/migrations/0011_registration_accepted_terms.py diff --git a/aleksis/apps/paweljong/migrations/0010_term_confirmation_text.py b/aleksis/apps/paweljong/migrations/0010_term_confirmation_text.py new file mode 100644 index 0000000..27a4643 --- /dev/null +++ b/aleksis/apps/paweljong/migrations/0010_term_confirmation_text.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.12 on 2022-02-20 21:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('paweljong', '0009_remove_feedback'), + ] + + operations = [ + migrations.AddField( + model_name='terms', + name='confirmation_text', + field=models.TextField(default='', verbose_name='Confirmation text'), + preserve_default=False, + ), + ] diff --git a/aleksis/apps/paweljong/migrations/0011_registration_accepted_terms.py b/aleksis/apps/paweljong/migrations/0011_registration_accepted_terms.py new file mode 100644 index 0000000..7114f5c --- /dev/null +++ b/aleksis/apps/paweljong/migrations/0011_registration_accepted_terms.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-02-20 22:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('paweljong', '0010_term_confirmation_text'), + ] + + operations = [ + migrations.AddField( + model_name='eventregistration', + name='accepted_terms', + field=models.ManyToManyField(related_name='registrations', to='paweljong.Terms', verbose_name='Accepted terms'), + ), + ] diff --git a/aleksis/apps/paweljong/models.py b/aleksis/apps/paweljong/models.py index 777d629..0cbaacc 100644 --- a/aleksis/apps/paweljong/models.py +++ b/aleksis/apps/paweljong/models.py @@ -14,6 +14,7 @@ from aleksis.core.util.core_helpers import generate_random_code class Terms(ExtensibleModel): title = models.CharField(max_length=255, verbose_name=_("Title")) term = RichTextField(verbose_name=_("Term")) + confirmation_text = models.TextField(verbose_name=_("Confirmation text")) def __str__(self) -> str: return self.title @@ -141,6 +142,11 @@ class EventRegistration(ExtensibleModel): null=True, ) donation = models.PositiveIntegerField(verbose_name=_("Donation"), blank=True, null=True) + accepted_terms = models.ManyToManyField( + Terms, + verbose_name=_("Accepted terms"), + related_name="registrations", + ) accept_sepa = models.BooleanField(verbose_name=_("SEPA direct debit")) iban = IBANField( diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py index 647739a..9be6a22 100644 --- a/aleksis/apps/paweljong/views.py +++ b/aleksis/apps/paweljong/views.py @@ -272,7 +272,7 @@ def is_email_needed(wizard): return True -register_forms = } +TEMPLATES = { "email": "paweljong/event/register_wizard.html", "register": "paweljong/event/register_wizard.html", "contact_details": "paweljong/event/register_wizard.html", @@ -286,6 +286,9 @@ class RegisterEventWizardView(SessionWizardView): template_name = "paweljong/event/register_wizard.html" file_storage = settings.DEFAULT_FILE_STORAGE + def get_template_names(self): + return [TEMPLATES[self.steps.current]] + def get_context_data(self, form, **kwargs): context = super().get_context_data(form, **kwargs) context["event"] = Event.objects.get(linked_group__short_name=self.kwargs["slug"]) @@ -363,11 +366,15 @@ class RegisterEventWizardView(SessionWizardView): kwargs = super().get_form_kwargs() if step == "email": kwargs["request"] = self.request - if step == "additional" or step == "consent": + if step == "additional": + event = Event.objects.get(linked_group__short_name=self.kwargs["slug"]) + kwargs["event"] = event + if step == "consent": event = Event.objects.get(linked_group__short_name=self.kwargs["slug"]) kwargs["event"] = event return kwargs + def get_form_initial(self, step): initial = self.initial_dict.get(step, {}) @@ -543,10 +550,10 @@ class RegisterEventWizardView(SessionWizardView): slugify(field.title).replace("-", "_") ] = cleaned_data_additional[field.title] - for field in event.terms.all(): - registration.extended_data[ - slugify(field.title).replace("-", "_") - ] = cleaned_data_consent[field.title] + for field in cleaned_data_consent: + pk = int(field.split("_")[1]) + term = Terms.objects.get(id=pk) + registration.accepted_terms.add(term) registration.save() @@ -590,7 +597,7 @@ class RegisterEventWizardView(SessionWizardView): ) act = Activity( -[5~ title=_("You registred for an event"), + title=_("You registred for an event"), description=_("You registred for the event %s" % event.display_name), app="Paweljong", user=person, @@ -611,6 +618,7 @@ class EventFullView(DetailView): context = super().get_context_data(**kwargs) context["can_register"] = context["event"].can_register(request=self.request) + context["is_authenticated"] = self.request.user.is_authenticated return context -- GitLab