27 lines
1 KiB
Python
27 lines
1 KiB
Python
from django.core.exceptions import PermissionDenied
|
|
from django.db.models.signals import post_save
|
|
from django.dispatch import receiver
|
|
from rest_framework.exceptions import PermissionDenied
|
|
|
|
from djeveric.signals import request_confirmation, user_confirmed, AlreadyConfirmed
|
|
from userausfall.models import User
|
|
|
|
|
|
@receiver(post_save, sender=User)
|
|
def user_saved(sender, instance: User, **kwargs):
|
|
if (instance.confidant_unconfirmed is not None) and (instance.confidant_unconfirmed != instance.confidant):
|
|
request_confirmation(instance.confidant_unconfirmed, instance)
|
|
|
|
|
|
@receiver(user_confirmed)
|
|
def user_confirmed(sender, user: User, instance: User, **kwargs):
|
|
if user == instance.confidant_unconfirmed:
|
|
if instance.confidant_unconfirmed != instance.confidant:
|
|
# confirm the confidant
|
|
instance.confidant = instance.confidant_unconfirmed
|
|
instance.save()
|
|
else:
|
|
raise AlreadyConfirmed("The confidant has already been confirmed.")
|
|
else:
|
|
raise PermissionDenied()
|