From e313095863b0c50a58d6673836051844af8b8d27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= Date: Tue, 26 Jul 2022 09:26:29 +0200 Subject: [PATCH] pricing: agendas not linkable if subscription not required (#67675) --- lingo/pricing/forms.py | 10 +++++++ .../manager_agenda_pricing_detail.html | 4 +++ lingo/pricing/views.py | 4 +-- tests/pricing/manager/test_agenda_pricing.py | 26 +++++++++++++++++++ 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/lingo/pricing/forms.py b/lingo/pricing/forms.py index b8adbfd..fba7ebb 100644 --- a/lingo/pricing/forms.py +++ b/lingo/pricing/forms.py @@ -177,6 +177,16 @@ class AgendaPricingForm(NewAgendaPricingForm): return slug + def clean_subscription_required(self): + subscription_required = self.cleaned_data['subscription_required'] + if subscription_required is False and self.instance.subscription_required is True: + # value has changed, check linked agendas + if self.instance.agendas.exists(): + raise forms.ValidationError( + _('Some agendas are linked to this pricing; please unlink them first.') + ) + return subscription_required + class AgendaPricingAgendaAddForm(forms.Form): agenda = forms.ModelChoiceField(label=_('Agenda to add'), queryset=Agenda.objects.none(), required=True) diff --git a/lingo/pricing/templates/lingo/pricing/manager_agenda_pricing_detail.html b/lingo/pricing/templates/lingo/pricing/manager_agenda_pricing_detail.html index f6ba8ad..35bed3d 100644 --- a/lingo/pricing/templates/lingo/pricing/manager_agenda_pricing_detail.html +++ b/lingo/pricing/templates/lingo/pricing/manager_agenda_pricing_detail.html @@ -27,7 +27,9 @@
+ {% if object.subscription_required %} + {% endif %} {% for matrix in iter_matrix %} @@ -48,6 +50,7 @@
+ {% if object.subscription_required %}
+ {% endif %}