aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/signals.py
diff options
context:
space:
mode:
authorGravatar minalike <[email protected]>2022-02-20 21:20:29 -0500
committerGravatar minalike <[email protected]>2022-02-20 21:20:29 -0500
commit0e1257d6eca90fa45ba7c11454a0fba7e3fc74f7 (patch)
treee3ad78be879f615b2621c0afba9db813e70fafff /pydis_site/apps/api/signals.py
parentAdd table of content and final edits (diff)
parentMerge pull request #668 from python-discord/update/name-profile-policy (diff)
Merge branch 'main' into content/update-help-channel-timing
Diffstat (limited to 'pydis_site/apps/api/signals.py')
-rw-r--r--pydis_site/apps/api/signals.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/pydis_site/apps/api/signals.py b/pydis_site/apps/api/signals.py
new file mode 100644
index 00000000..5c26bfb6
--- /dev/null
+++ b/pydis_site/apps/api/signals.py
@@ -0,0 +1,12 @@
+from django.db.models.signals import post_delete
+from django.dispatch import receiver
+
+from pydis_site.apps.api.models.bot import Role, User
+
+
+@receiver(signal=post_delete, sender=Role)
+def delete_role_from_user(sender: Role, instance: Role, **kwargs) -> None:
+ """Unassigns the Role (instance) that is being deleted from every user that has it."""
+ for user in User.objects.filter(roles__contains=[instance.id]):
+ del user.roles[user.roles.index(instance.id)]
+ user.save()