diff options
author | 2021-11-26 21:15:42 +0100 | |
---|---|---|
committer | 2021-11-26 21:15:42 +0100 | |
commit | 053d43e4cecdf60fbd11b4bccac6dbeb28e834d5 (patch) | |
tree | 358f03d4735a91391272070c9eb27c60318be70c /pydis_site/apps/api/signals.py | |
parent | Merge pull request #619 from hedyhli/patch-1 (diff) | |
parent | Patch signals to use post_delete, instead of pre_delete (diff) |
Merge pull request #572 from D0rs4n/pr/deleterolesignal
Create a signal to unassign roles from user when the role is deleted
Diffstat (limited to 'pydis_site/apps/api/signals.py')
-rw-r--r-- | pydis_site/apps/api/signals.py | 12 |
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() |