aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/signals.py
blob: 5c26bfb635f7ed1879db5476695849842b32535d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
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()