mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
- [x] Data model - [x] UI - [x] Fire hooks - [x] Unit tests - [x] Display logs - [x] API to modify hooks - [x] Documentation - [x] More hooks!
50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
from rest_framework import viewsets
|
|
|
|
from pretix.api.models import WebHook
|
|
from pretix.api.serializers.webhooks import WebHookSerializer
|
|
from pretix.helpers.dicts import merge_dicts
|
|
|
|
|
|
class WebHookViewSet(viewsets.ModelViewSet):
|
|
serializer_class = WebHookSerializer
|
|
queryset = WebHook.objects.none()
|
|
permission = 'can_change_organizer_settings'
|
|
write_permission = 'can_change_organizer_settings'
|
|
|
|
def get_queryset(self):
|
|
return self.request.organizer.webhooks.prefetch_related('listeners')
|
|
|
|
def get_serializer_context(self):
|
|
ctx = super().get_serializer_context()
|
|
ctx['organizer'] = self.request.organizer
|
|
return ctx
|
|
|
|
def perform_create(self, serializer):
|
|
inst = serializer.save(organizer=self.request.organizer)
|
|
self.request.organizer.log_action(
|
|
'pretix.webhook.created',
|
|
user=self.request.user,
|
|
auth=self.request.auth,
|
|
data=merge_dicts(self.request.data, {'id': inst.pk})
|
|
)
|
|
|
|
def perform_update(self, serializer):
|
|
inst = serializer.save(organizer=self.request.organizer)
|
|
self.request.organizer.log_action(
|
|
'pretix.webhook.changed',
|
|
user=self.request.user,
|
|
auth=self.request.auth,
|
|
data=merge_dicts(self.request.data, {'id': serializer.instance.pk})
|
|
)
|
|
return inst
|
|
|
|
def perform_destroy(self, instance):
|
|
self.request.organizer.log_action(
|
|
'pretix.webhook.changed',
|
|
user=self.request.user,
|
|
auth=self.request.auth,
|
|
data={'id': instance.pk, 'enabled': False}
|
|
)
|
|
instance.enabled = False
|
|
instance.save(update_fields=['enabled'])
|