from django.utils import timezone from django.db.models.signals import post_save from django.dispatch import receiver from .models import ( Employee, LogEntry, Todo, ) @receiver(post_save, sender=Employee, dispatch_uid="employee_created_signal") def create_employee(sender, instance, created, **kwargs): if created: Todo.objects.bulk_create([ Todo(employee=instance, description="Active Directory"), Todo(employee=instance, description="Office 365 Account"), Todo(employee=instance, description="Office 365 Licence"), Todo(employee=instance, description="Zendesk Account"), Todo(employee=instance, description="inContact Account"), Todo(employee=instance, description="IT Glue Entry"), ]) LogEntry.objects.create( employee=instance, notes=f"Created {instance.full_name}" ) @receiver(post_save, sender=Todo, dispatch_uid="todo_completed_signal") def complete_todo(sender, instance, created, **kwargs): if instance.completed and not instance.completed_at: LogEntry.objects.create( employee=instance.employee, notes=f'Completed To-do: "{instance.description}"' ) instance.completed_at = timezone.now() instance.save() elif instance.completed_at and not instance.completed: LogEntry.objects.create( employee=instance.employee, notes=f'Re-opened To-do: "{instance.description}"' ) instance.completed_at = None instance.save()