aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api
diff options
context:
space:
mode:
authorGravatar Johannes Christ <[email protected]>2024-03-29 13:10:42 +0100
committerGravatar Johannes Christ <[email protected]>2024-03-29 13:27:28 +0100
commit9f5f314e2f01b2a08546d6904d27674d9a7db213 (patch)
treea2ed752d93c3210a2282eab9687323690e9b8558 /pydis_site/apps/api
parentBump djangorestframework from 3.14.0 to 3.15.1 (diff)
Implement adjustments for DRF 3.15
Diffstat (limited to 'pydis_site/apps/api')
-rw-r--r--pydis_site/apps/api/tests/test_bumped_threads.py2
-rw-r--r--pydis_site/apps/api/tests/test_filters.py7
-rw-r--r--pydis_site/apps/api/tests/test_infractions.py2
-rw-r--r--pydis_site/apps/api/tests/test_nominations.py4
-rw-r--r--pydis_site/apps/api/tests/test_roles.py2
-rw-r--r--pydis_site/apps/api/urls.py3
-rw-r--r--pydis_site/apps/api/viewsets/bot/infraction.py26
7 files changed, 13 insertions, 33 deletions
diff --git a/pydis_site/apps/api/tests/test_bumped_threads.py b/pydis_site/apps/api/tests/test_bumped_threads.py
index 2e3892c7..72f475c6 100644
--- a/pydis_site/apps/api/tests/test_bumped_threads.py
+++ b/pydis_site/apps/api/tests/test_bumped_threads.py
@@ -60,4 +60,4 @@ class BumpedThreadAPITests(AuthenticatedAPITestCase):
response = self.client.get(url)
self.assertEqual(response.status_code, 404)
- self.assertEqual(response.json(), {"detail": "Not found."})
+ self.assertEqual(response.json(), {"detail": "No BumpedThread matches the given query."})
diff --git a/pydis_site/apps/api/tests/test_filters.py b/pydis_site/apps/api/tests/test_filters.py
index 4cef1c8f..9771bacc 100644
--- a/pydis_site/apps/api/tests/test_filters.py
+++ b/pydis_site/apps/api/tests/test_filters.py
@@ -211,7 +211,12 @@ class GenericFilterTests(AuthenticatedAPITestCase):
response = self.client.get(f"{sequence.url()}/42")
self.assertEqual(response.status_code, 404)
- self.assertDictEqual(response.json(), {'detail': 'Not found.'})
+ parsed = response.json()
+ self.assertIn('detail', parsed)
+ self.assertIn(parsed['detail'], (
+ "No Filter matches the given query.",
+ "No FilterList matches the given query."
+ ))
def test_creation(self) -> None:
for name, sequence in get_test_sequences().items():
diff --git a/pydis_site/apps/api/tests/test_infractions.py b/pydis_site/apps/api/tests/test_infractions.py
index f1e54b1e..b82fb66c 100644
--- a/pydis_site/apps/api/tests/test_infractions.py
+++ b/pydis_site/apps/api/tests/test_infractions.py
@@ -559,7 +559,7 @@ class CreationTests(AuthenticatedAPITestCase):
second_response.json(),
{
'non_field_errors': [
- 'This user already has an active infraction of this type.'
+ 'The fields user, type must make a unique set.'
]
}
)
diff --git a/pydis_site/apps/api/tests/test_nominations.py b/pydis_site/apps/api/tests/test_nominations.py
index e4dfe36a..7c6f1bbb 100644
--- a/pydis_site/apps/api/tests/test_nominations.py
+++ b/pydis_site/apps/api/tests/test_nominations.py
@@ -379,7 +379,7 @@ class NominationTests(AuthenticatedAPITestCase):
response = self.client.get(url, data={})
self.assertEqual(response.status_code, 404)
self.assertEqual(response.json(), {
- "detail": "Not found."
+ "detail": "No Nomination matches the given query."
})
def test_returns_404_on_patch_unknown_nomination(self):
@@ -391,7 +391,7 @@ class NominationTests(AuthenticatedAPITestCase):
response = self.client.patch(url, data={})
self.assertEqual(response.status_code, 404)
self.assertEqual(response.json(), {
- "detail": "Not found."
+ "detail": "No Nomination matches the given query."
})
def test_returns_405_on_list_put(self):
diff --git a/pydis_site/apps/api/tests/test_roles.py b/pydis_site/apps/api/tests/test_roles.py
index d3031990..8ca6e7c1 100644
--- a/pydis_site/apps/api/tests/test_roles.py
+++ b/pydis_site/apps/api/tests/test_roles.py
@@ -208,4 +208,4 @@ class CreationTests(AuthenticatedAPITestCase):
for method in ('get', 'put', 'patch', 'delete'):
response = getattr(self.client, method)(url)
self.assertEqual(response.status_code, 404)
- self.assertJSONEqual(response.content, '{"detail": "Not found."}')
+ self.assertJSONEqual(response.content, '{"detail": "No Role matches the given query."}')
diff --git a/pydis_site/apps/api/urls.py b/pydis_site/apps/api/urls.py
index 5cda033a..58e4878b 100644
--- a/pydis_site/apps/api/urls.py
+++ b/pydis_site/apps/api/urls.py
@@ -30,7 +30,8 @@ from .viewsets import (
bot_router = DefaultRouter(trailing_slash=False)
bot_router.register(
'filter/filter_lists',
- FilterListViewSet
+ FilterListViewSet,
+ basename='filter-filter-lists',
)
bot_router.register(
"aoc-account-links",
diff --git a/pydis_site/apps/api/viewsets/bot/infraction.py b/pydis_site/apps/api/viewsets/bot/infraction.py
index 8da82822..254a588d 100644
--- a/pydis_site/apps/api/viewsets/bot/infraction.py
+++ b/pydis_site/apps/api/viewsets/bot/infraction.py
@@ -1,6 +1,5 @@
import datetime
-from django.db import IntegrityError
from django.db.models import QuerySet
from django.http.request import HttpRequest
from django_filters.rest_framework import DjangoFilterBackend
@@ -275,28 +274,3 @@ class InfractionViewSet(
"""
self.serializer_class = ExpandedInfractionSerializer
return self.partial_update(*args, **kwargs)
-
- def create(self, request: HttpRequest, *args, **kwargs) -> Response:
- """
- Create an infraction for a target user.
-
- Called by the Django Rest Framework in response to the corresponding HTTP request.
- """
- try:
- return super().create(request, *args, **kwargs)
- except IntegrityError as err:
- # We need to use `__cause__` here, as Django reraises the internal
- # UniqueViolation emitted by psycopg2 (which contains the attribute
- # that we actually need)
- #
- # _meta is documented and mainly named that way to prevent
- # name clashes: https://docs.djangoproject.com/en/dev/ref/models/meta/
- if err.__cause__.diag.constraint_name == Infraction._meta.constraints[0].name:
- raise ValidationError(
- {
- 'non_field_errors': [
- 'This user already has an active infraction of this type.',
- ]
- }
- )
- raise # pragma: no cover - no other constraint to test with