Scheduled emails: Extend filter by subevents (Z#23122902) (#3551)

To create automated mail rules for specific subevents only, this adds a selection widget to choose which, only appearing if there are any subevents to select.
This commit is contained in:
Phin Wolkwitz
2023-09-06 12:05:37 +02:00
committed by GitHub
parent 8913d35838
commit 991f245dce
7 changed files with 127 additions and 10 deletions

View File

@@ -309,8 +309,8 @@ class RuleForm(FormPlaceholderMixin, I18nModelForm):
class Meta:
model = Rule
fields = ['subject', 'template', 'attach_ical',
'send_date', 'send_offset_days', 'send_offset_time',
fields = ['subject', 'template', 'attach_ical', 'send_date',
'send_offset_days', 'send_offset_time', 'subevent',
'all_products', 'limit_products', 'restrict_to_status',
'checked_in_status', 'send_to', 'enabled']
@@ -359,6 +359,29 @@ class RuleForm(FormPlaceholderMixin, I18nModelForm):
super().__init__(*args, **kwargs)
self.fields['subevent'] = forms.ModelChoiceField(
SubEvent.objects.none(),
label=pgettext_lazy('sendmail_form', 'Restrict to a specific event date'),
required=False,
empty_label=pgettext_lazy('subevent', 'All dates')
)
if self.event.has_subevents:
self.fields['subevent'].queryset = self.event.subevents.all()
self.fields['subevent'].widget = Select2(
attrs={
'data-model-select2': 'event',
'data-select2-url': reverse('control:event.subevents.select2', kwargs={
'event': self.event.slug,
'organizer': self.event.organizer.slug,
}),
'data-placeholder': pgettext_lazy('subevent', 'Date')
}
)
self.fields['subevent'].widget.choices = self.fields['subevent'].choices
else:
del self.fields['subevent']
self.fields['limit_products'].queryset = Item.objects.filter(event=self.event)
self.fields['schedule_type'] = forms.ChoiceField(