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 0000000000000000000000000000000000000000..27a4643e3ae9f479f2de5a96c7970c2976101aa0 --- /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 0000000000000000000000000000000000000000..7114f5c9a5f4450d4e2f7ccb9d30cf799de985ee --- /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 777d629cdedc9d3a7a1633a7b8f25f6788b36738..0cbaacc9f9cb6e78732275f5f007f543f3630b88 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 647739a8a12498717293f5ecf7f44c5367ae1ec1..9be6a225bbe475a97baeab01bcb3c7e3cf461bc2 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