diff --git a/offboarding/models.py b/offboarding/models.py index a5022028d..849143901 100644 --- a/offboarding/models.py +++ b/offboarding/models.py @@ -1,3 +1,4 @@ +from collections.abc import Iterable from datetime import date from django.db import models from django.db.models.signals import post_save @@ -32,6 +33,26 @@ class Offboarding(models.Model): def __str__(self): return self.title + def save(self, *args, **kwargs): + is_new = not self.pk + super().save(*args, **kwargs) + if is_new: + stages = [ + ("Exit interview", "interview"), + ("Work Handover", "handover"), + ("FNF", "fnf"), + ("Farewell", "other"), + ("Archived", "archived"), + ] + for stage in stages: + new = OffboardingStage() + new.offboarding_id = self + new.title = stage[0] + new.type = stage[1] + new.save() + + return + class OffboardingStage(models.Model): """ @@ -42,12 +63,14 @@ class OffboardingStage(models.Model): ("notice_period", "Notice period"), ("fnf", "FnF Settlement"), ("other", "Other"), + ("interview", "Interview"), + ("handover", "Work handover"), ("archived", "Archived"), ] title = models.CharField(max_length=20) type = models.CharField(max_length=13, choices=types) - offboarding_id = models.ForeignKey(Offboarding, on_delete=models.PROTECT) + offboarding_id = models.ForeignKey(Offboarding, on_delete=models.CASCADE) managers = models.ManyToManyField(Employee) sequence = models.IntegerField(default=0, editable=False) created_at = models.DateTimeField(auto_now_add=True) @@ -94,7 +117,7 @@ class OffboardingEmployee(models.Model): Employee, on_delete=models.CASCADE, verbose_name="Employee" ) stage_id = models.ForeignKey( - OffboardingStage, on_delete=models.PROTECT, verbose_name="Stage", null=True + OffboardingStage, on_delete=models.CASCADE, verbose_name="Stage", null=True ) notice_period = models.IntegerField(null=True) unit = models.CharField(max_length=10, choices=units, default="month", null=True) diff --git a/offboarding/templates/offboarding/pipeline/offboardings.html b/offboarding/templates/offboarding/pipeline/offboardings.html index c728c9e98..08a77e974 100644 --- a/offboarding/templates/offboarding/pipeline/offboardings.html +++ b/offboarding/templates/offboarding/pipeline/offboardings.html @@ -46,7 +46,7 @@ {% endif %} {% if perms.offboarding.delete_offboarding %}