Skip to content

Commit 45dfba5

Browse files
committed
Fix bot/infractions after and before filter check being inverted
The check was backwards, enforcing that no results must ever be returned Relevant tests have been added that actually fetch an infraction with the right times so that I'm sure it's not still broken
1 parent b9f2589 commit 45dfba5

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

pydis_site/apps/api/tests/test_infractions.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,15 +177,28 @@ def test_filter_before_invalid(self):
177177
self.assertEqual(response.status_code, 400)
178178
self.assertEqual(list(response.json())[0], "expires_before")
179179

180-
def test_after_before_before_invalid(self):
180+
def test_after_before_before(self):
181181
url = reverse('bot:infraction-list', host='api')
182-
target_time = datetime.datetime.utcnow() + datetime.timedelta(hours=5)
183-
target_time_late = datetime.datetime.utcnow() + datetime.timedelta(hours=9)
182+
target_time = datetime.datetime.utcnow() + datetime.timedelta(hours=4)
183+
target_time_late = datetime.datetime.utcnow() + datetime.timedelta(hours=6)
184184
response = self.client.get(
185185
f'{url}?expires_before={target_time_late.isoformat()}'
186186
f'&expires_after={target_time.isoformat()}'
187187
)
188188

189+
self.assertEqual(response.status_code, 200)
190+
self.assertEqual(len(response.json()), 1)
191+
self.assertEqual(response.json()[0]["id"], self.superstar_expires_soon.id)
192+
193+
def test_after_after_before_invalid(self):
194+
url = reverse('bot:infraction-list', host='api')
195+
target_time = datetime.datetime.utcnow() + datetime.timedelta(hours=5)
196+
target_time_late = datetime.datetime.utcnow() + datetime.timedelta(hours=9)
197+
response = self.client.get(
198+
f'{url}?expires_before={target_time.isoformat()}'
199+
f'&expires_after={target_time_late.isoformat()}'
200+
)
201+
189202
self.assertEqual(response.status_code, 400)
190203
errors = list(response.json())
191204
self.assertIn("expires_before", errors)

pydis_site/apps/api/viewsets/bot/infraction.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ def get_queryset(self) -> QuerySet:
195195
raise ValidationError({'expires_before': ['failed to convert to datetime']})
196196

197197
if 'expires_at__lte' in additional_filters and 'expires_at__gte' in additional_filters:
198-
if additional_filters['expires_at__gte'] < additional_filters['expires_at__lte']:
198+
if additional_filters['expires_at__gte'] > additional_filters['expires_at__lte']:
199199
raise ValidationError({
200200
'expires_before': ['cannot be after expires_after'],
201201
'expires_after': ['cannot be before expires_before'],

0 commit comments

Comments
 (0)