Marwan Alwali 4d06ca4b5e update
2025-09-20 14:26:19 +03:00

35 lines
1.1 KiB
Python

# accounts/signals.py
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.db import transaction
from django.utils.text import slugify
from hr.models import Employee
from .models import User
@receiver(post_save, sender=User, dispatch_uid="create_employee_on_user_create_simple")
def create_employee_on_user_create(sender, instance: User, created: bool, **kwargs):
if not created:
return
def _make():
tenant = getattr(instance, "tenant", None)
email = (instance.email or "").strip()
# If already linked OR same email exists in this tenant, skip
if Employee.objects.filter(user=instance).exists():
return
if email and Employee.objects.filter(tenant=tenant, email__iexact=email).exists():
return
Employee.objects.create(
tenant=tenant,
user=instance,
first_name=instance.first_name or "",
last_name=instance.last_name or "",
email=email,
# employee_id will be auto-generated in Employee.save()
)
transaction.on_commit(_make)