TS-ResHub/accounts/signals.py

20 lines
780 B
Python

from django.db.models.signals import post_save
from django.dispatch import receiver
from accounts.models import User
from invites.models import RegistrationCode
import uuid
@receiver(post_save, sender=User)
def create_registration_code_for_manager(sender, instance, created, **kwargs):
if instance.role == "manager":
if created or not RegistrationCode.objects.filter(manager=instance).exists():
RegistrationCode.objects.create(
code=str(uuid.uuid4()).replace("-", "")[:12],
manager=instance,
description=f"{instance.username} 的默认邀请码",
usage_limit=10
)
elif instance.role == "user":
RegistrationCode.objects.filter(manager=instance).update(usage_limit=0)