Skip to content

Commit f34a520

Browse files
committed
Patch signals to use post_delete, instead of pre_delete
From now on the signal will only get executed after the Role has been deleted The commit also introduces minor changes in the tests of roles
1 parent 9d255dc commit f34a520

File tree

2 files changed

+4
-5
lines changed

2 files changed

+4
-5
lines changed

pydis_site/apps/api/signals.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
from django.db.models.signals import pre_delete
1+
from django.db.models.signals import post_delete
22
from django.dispatch import receiver
33

44
from pydis_site.apps.api.models.bot import Role, User
55

66

7-
@receiver(signal=pre_delete, sender=Role)
7+
@receiver(signal=post_delete, sender=Role)
88
def delete_role_from_user(sender: Role, instance: Role, **kwargs) -> None:
99
"""Unassigns the Role (instance) that is being deleted from every user that has it."""
1010
for user in User.objects.filter(roles__contains=[instance.id]):

pydis_site/apps/api/tests/test_roles.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from ..models import Role, User
55

66

7-
87
class CreationTests(AuthenticatedAPITestCase):
98
@classmethod
109
def setUpTestData(cls):
@@ -96,11 +95,11 @@ def test_role_list(self):
9695
url = reverse('api:bot:role-list')
9796

9897
response = self.client.get(url)
99-
self.assertContains(response, text="id", count=4, status_code=200)
98+
self.assertContains(response, text="id", count=5, status_code=200)
10099

101100
roles = response.json()
102101
self.assertIsInstance(roles, list)
103-
self.assertEqual(len(roles), 4)
102+
self.assertEqual(len(roles), 5)
104103

105104
for role in roles:
106105
self._validate_roledict(role)

0 commit comments

Comments
 (0)