aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/signals.py
blob: c69704b12ad1b1cd0729003006c11b8e6020a7b2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
from django.db.models.signals import pre_delete
from django.dispatch import receiver

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


@receiver(signal=pre_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()