Compare commits

...

3 Commits

Author SHA1 Message Date
Raphael Michel
1226de8d2f Fix isort 2024-07-26 16:43:12 +02:00
Raphael Michel
c0d7630eae Fix naming 2024-07-25 13:19:00 +02:00
Raphael Michel
8fe136b374 API: Allow to filter enabled webhooks (Z#23160605) 2024-07-25 10:48:56 +02:00
3 changed files with 14 additions and 0 deletions

View File

@@ -116,6 +116,7 @@ Endpoints
}
:query integer page: The page number in case of a multi-page result set, default is 1
:query boolean enabled: Only show webhooks that are or are not enabled
:param organizer: The ``slug`` field of the organizer to fetch
:statuscode 200: no error
:statuscode 401: Authentication failure

View File

@@ -19,6 +19,8 @@
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
import django_filters
from django_filters.rest_framework import DjangoFilterBackend, FilterSet
from rest_framework import viewsets
from pretix.api.models import WebHook
@@ -26,11 +28,17 @@ from pretix.api.serializers.webhooks import WebHookSerializer
from pretix.helpers.dicts import merge_dicts
class WebhookFilter(FilterSet):
enabled = django_filters.rest_framework.BooleanFilter()
class WebHookViewSet(viewsets.ModelViewSet):
serializer_class = WebHookSerializer
queryset = WebHook.objects.none()
permission = 'can_change_organizer_settings'
write_permission = 'can_change_organizer_settings'
filter_backends = (DjangoFilterBackend,)
filterset_class = WebhookFilter
def get_queryset(self):
return self.request.organizer.webhooks.prefetch_related('listeners')

View File

@@ -60,6 +60,11 @@ def test_hook_list(token_client, organizer, event, webhook):
assert resp.status_code == 200
assert [res] == resp.data['results']
resp = token_client.get('/api/v1/organizers/{}/webhooks/?enabled=true'.format(organizer.slug))
assert [res] == resp.data['results']
resp = token_client.get('/api/v1/organizers/{}/webhooks/?enabled=false'.format(organizer.slug))
assert [] == resp.data['results']
@pytest.mark.django_db
def test_hook_detail(token_client, organizer, event, webhook):