20 lines
780 B
Python
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)
|