Self-service refund form (#1135)

* Auto-refund

* Add missing template

* Notification for requested refund

* Model-level tests

* Add front-end tests

* Default to notify
This commit is contained in:
Raphael Michel
2019-01-18 17:24:42 +01:00
committed by GitHub
parent 80b5750756
commit 06eddb2c6d
24 changed files with 857 additions and 95 deletions

View File

@@ -41,10 +41,10 @@ from pretix.base.signals import register_ticket_outputs
from pretix.base.templatetags.money import money_filter
from pretix.base.templatetags.rich_text import markdown_compile
from pretix.control.forms.event import (
CommentForm, DisplaySettingsForm, EventDeleteForm, EventMetaValueForm,
EventSettingsForm, EventUpdateForm, InvoiceSettingsForm, MailSettingsForm,
PaymentSettingsForm, ProviderForm, QuickSetupForm,
QuickSetupProductFormSet, TaxRuleForm, TaxRuleLineFormSet,
CancelSettingsForm, CommentForm, DisplaySettingsForm, EventDeleteForm,
EventMetaValueForm, EventSettingsForm, EventUpdateForm,
InvoiceSettingsForm, MailSettingsForm, PaymentSettingsForm, ProviderForm,
QuickSetupForm, QuickSetupProductFormSet, TaxRuleForm, TaxRuleLineFormSet,
TicketSettingsForm, WidgetCodeForm,
)
from pretix.control.permissions import EventPermissionRequiredMixin
@@ -407,6 +407,43 @@ class InvoiceSettings(EventSettingsViewMixin, EventSettingsFormView):
})
class CancelSettings(EventSettingsViewMixin, EventSettingsFormView):
model = Event
form_class = CancelSettingsForm
template_name = 'pretixcontrol/event/cancel.html'
permission = 'can_change_event_settings'
def get_success_url(self) -> str:
return reverse('control:event.settings.cancel', kwargs={
'organizer': self.request.event.organizer.slug,
'event': self.request.event.slug
})
def get_context_data(self, **kwargs):
ctx = super().get_context_data()
ctx['gets_notification'] = self.request.user.notifications_send and (
(
self.request.user.notification_settings.filter(
event=self.request.event,
action_type='pretix.event.order.refund.requested',
enabled=True
).exists()
) or (
self.request.user.notification_settings.filter(
event__isnull=True,
action_type='pretix.event.order.refund.requested',
enabled=True
).exists() and not
self.request.user.notification_settings.filter(
event=self.request.event,
action_type='pretix.event.order.refund.requested',
enabled=False
).exists()
)
)
return ctx
class InvoicePreview(EventPermissionRequiredMixin, View):
permission = 'can_change_event_settings'