diff --git a/offboarding/forms.py b/offboarding/forms.py index 29d8da33e..0d5de819a 100644 --- a/offboarding/forms.py +++ b/offboarding/forms.py @@ -35,6 +35,7 @@ class OffboardingForm(ModelForm): class Meta: model = Offboarding fields = "__all__" + exclude = ["is_active"] def as_p(self): """ @@ -55,9 +56,7 @@ class OffboardingStageForm(ModelForm): class Meta: model = OffboardingStage fields = "__all__" - exclude = [ - "offboarding_id", - ] + exclude = ["offboarding_id", "is_active"] def as_p(self): """ @@ -78,7 +77,7 @@ class OffboardingEmployeeForm(ModelForm): class Meta: model = OffboardingEmployee fields = "__all__" - exclude = ["notice_period", "unit"] + exclude = ["notice_period", "unit" , "is_active"] widgets = { "notice_period_starts": forms.DateInput(attrs={"type": "date"}), "notice_period_ends": forms.DateInput(attrs={"type": "date"}), @@ -95,7 +94,7 @@ class OffboardingEmployeeForm(ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) attrs = self.fields["employee_id"].widget.attrs - attrs["onchange"] = "intialNoticePeriod($(this))" + attrs["onchange"] = "initialNoticePeriod($(this))" self.fields["employee_id"].widget.attrs.update(attrs) attrs = self.fields["notice_period_starts"].widget.attrs attrs["onchange"] = "noticePeriodUpdate($(this))" @@ -145,6 +144,7 @@ class NoteForm(ModelForm): class Meta: model = OffboardingNote fields = "__all__" + exclude = ["is_active"] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -161,20 +161,20 @@ class NoteForm(ModelForm): def save(self, commit: bool = ...) -> Any: multiple_attachment_ids = [] - attachemnts = None + attachments = None if self.files.getlist("attachment"): - attachemnts = self.files.getlist("attachment") - self.instance.attachemnt = attachemnts[0] + attachments = self.files.getlist("attachment") + self.instance.attachment = attachments[0] multiple_attachment_ids = [] - for attachemnt in attachemnts: + for attachment in attachments: file_instance = OffboardingStageMultipleFile() - file_instance.attachment = attachemnt + file_instance.attachment = attachment file_instance.save() multiple_attachment_ids.append(file_instance.pk) instance = super().save(commit) if commit: instance.attachments.add(*multiple_attachment_ids) - return instance, attachemnts + return instance, attachments class TaskForm(ModelForm): @@ -191,9 +191,7 @@ class TaskForm(ModelForm): class Meta: model = OffboardingTask fields = "__all__" - exclude = [ - "status", - ] + exclude = ["status", "is_active"] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -222,7 +220,7 @@ class TaskForm(ModelForm): if commit: employees = self.cleaned_data["tasks_to"] for employee in employees: - assinged_task = EmployeeTask.objects.get_or_create( + assigned_task = EmployeeTask.objects.get_or_create( employee_id=employee, task_id=self.instance, ) @@ -242,6 +240,7 @@ class ResignationLetterForm(ModelForm): class Meta: model = ResignationLetter fields = "__all__" + exclude = ["is_active"] def as_p(self): """ diff --git a/offboarding/models.py b/offboarding/models.py index caae90342..48df6d12b 100644 --- a/offboarding/models.py +++ b/offboarding/models.py @@ -3,6 +3,8 @@ from datetime import date, timedelta from django.db import models from django.db.models.signals import post_save from django.dispatch import receiver +from django.utils.translation import gettext_lazy as _ +from horilla.models import HorillaModel from base import thread_local_middleware from base.horilla_company_manager import HorillaCompanyManager from base.models import Company @@ -16,18 +18,16 @@ from payroll.models.models import Contract # Create your models here. -class Offboarding(models.Model): +class Offboarding(HorillaModel): """ Offboarding model """ - statuses = [("ongoing", "Ongoing"), ("completed", "Completed")] + statuses = [("ongoing", _("Ongoing")), ("completed", _("Completed"))] title = models.CharField(max_length=20) description = models.TextField(max_length=255) managers = models.ManyToManyField(Employee) - created_at = models.DateTimeField(auto_now_add=True) status = models.CharField(max_length=10, default="ongoing", choices=statuses) - is_active = models.BooleanField(default=True) company_id = models.ForeignKey( Company, on_delete=models.CASCADE, null=True, editable=False ) @@ -57,18 +57,18 @@ class Offboarding(models.Model): return -class OffboardingStage(models.Model): +class OffboardingStage(HorillaModel): """ Offboarding model """ types = [ - ("notice_period", "Notice period"), - ("fnf", "FnF Settlement"), - ("other", "Other"), - ("interview", "Interview"), - ("handover", "Work handover"), - ("archived", "Archived"), + ("notice_period", _("Notice period")), + ("fnf", _("FnF Settlement")), + ("other", _("Other")), + ("interview", _("Interview")), + ("handover", _("Work handover")), + ("archived", _("Archived")), ] title = models.CharField(max_length=20) @@ -76,7 +76,6 @@ class OffboardingStage(models.Model): 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) def __str__(self) -> str: return str(self.title) @@ -101,16 +100,15 @@ def create_initial_stage(sender, instance, created, **kwargs): initial_stage.save() -class OffboardingStageMultipleFile(models.Model): +class OffboardingStageMultipleFile(HorillaModel): """ OffboardingStageMultipleFile """ attachment = models.FileField(upload_to="offboarding/attachments") - created_at = models.DateTimeField(auto_now_add=True) -class OffboardingEmployee(models.Model): +class OffboardingEmployee(HorillaModel): """ OffboardingEmployee model / Employee on stage """ @@ -126,7 +124,6 @@ class OffboardingEmployee(models.Model): unit = models.CharField(max_length=10, choices=units, default="month", null=True) notice_period_starts = models.DateField(null=True) notice_period_ends = models.DateField(null=True, blank=True) - created_at = models.DateTimeField(auto_now_add=True) objects = HorillaCompanyManager( related_company_field="employee_id__employee_work_info__company_id" ) @@ -135,15 +132,15 @@ class OffboardingEmployee(models.Model): return self.employee_id.get_full_name() -class ResignationLetter(models.Model): +class ResignationLetter(HorillaModel): """ Resignation Request Employee model """ statuses = [ - ("requested", "Requested"), - ("approved", "Approved"), - ("rejected", "Rejected"), + ("requested", _("Requested")), + ("approved", _("Approved")), + ("rejected", _("Rejected")), ] employee_id = models.ForeignKey( Employee, on_delete=models.CASCADE, verbose_name="Employee" @@ -155,8 +152,6 @@ class ResignationLetter(models.Model): offboarding_employee_id = models.ForeignKey( OffboardingEmployee, on_delete=models.CASCADE, editable=False, null=True ) - created_at = models.DateTimeField(auto_now_add=True) - is_active = models.BooleanField(default=True) objects = HorillaCompanyManager( related_company_field="employee_id__employee_work_info__company_id" ) @@ -191,7 +186,8 @@ class ResignationLetter(models.Model): ).first() try: notice_period_ends = ( - notice_period_starts + timedelta (contract_notice_end_date.notice_period_in_days) + notice_period_starts + + timedelta(contract_notice_end_date.notice_period_in_days) if contract_notice_end_date else notice_period_ends ) @@ -221,7 +217,7 @@ class ResignationLetter(models.Model): offboarding_employee.save() -class OffboardingTask(models.Model): +class OffboardingTask(HorillaModel): """ OffboardingTask model """ @@ -239,22 +235,20 @@ class OffboardingTask(models.Model): class Meta: unique_together = ["title", "stage_id"] - created_at = models.DateTimeField(auto_now_add=True) - def __str__(self) -> str: return self.title -class EmployeeTask(models.Model): +class EmployeeTask(HorillaModel): """ EmployeeTask model """ statuses = [ - ("todo", "Todo"), - ("inprogress", "In progress"), - ("stuck", "Stuck"), - ("completed", "Completed"), + ("todo", _("Todo")), + ("in_progress", _("In progress")), + ("stuck", _("Stuck")), + ("completed", _("Completed")), ] employee_id = models.ForeignKey( OffboardingEmployee, @@ -262,7 +256,7 @@ class EmployeeTask(models.Model): verbose_name="Employee", null=True, ) - status = models.CharField(max_length=10, choices=statuses, default="todo") + status = models.CharField(max_length=20, choices=statuses, default="todo") task_id = models.ForeignKey(OffboardingTask, on_delete=models.CASCADE) description = models.TextField(null=True, editable=False, max_length=255) history = HorillaAuditLog( @@ -271,7 +265,6 @@ class EmployeeTask(models.Model): HorillaAuditInfo, ], ) - created_at = models.DateTimeField(auto_now_add=True) class Meta: unique_together = ["employee_id", "task_id"] @@ -282,7 +275,7 @@ class EmployeeTask(models.Model): notify.send( request.user.employee_get, recipient=self.employee_id.employee_id.employee_user_id, - verb=f'Offboarding task "{self.task_id.title}" has been assiged', + verb=f'Offboarding task "{self.task_id.title}" has been assigned', verb_ar=f"", verb_de=f"", verb_es=f"", @@ -292,7 +285,7 @@ class EmployeeTask(models.Model): ) -class ExitReason(models.Model): +class ExitReason(HorillaModel): """ ExitReason model """ @@ -302,10 +295,10 @@ class ExitReason(models.Model): offboarding_employee_id = models.ForeignKey( OffboardingEmployee, on_delete=models.PROTECT ) - attacments = models.ManyToManyField(OffboardingStageMultipleFile) + attachments = models.ManyToManyField(OffboardingStageMultipleFile) -class OffboardingNote(models.Model): +class OffboardingNote(HorillaModel): """ OffboardingNote """ @@ -323,7 +316,6 @@ class OffboardingNote(models.Model): stage_id = models.ForeignKey( OffboardingStage, on_delete=models.PROTECT, null=True, editable=False ) - created_at = models.DateTimeField(auto_now_add=True) class Meta: ordering = ["-created_at"] @@ -338,7 +330,7 @@ class OffboardingNote(models.Model): return super().save(*args, **kwargs) -class OffboardingGeneralSetting(models.Model): +class OffboardingGeneralSetting(HorillaModel): """ OffboardingGeneralSettings """ diff --git a/offboarding/templates/offboarding/pipeline/pipeline.html b/offboarding/templates/offboarding/pipeline/pipeline.html index 5d7f3e678..ed73df9cb 100644 --- a/offboarding/templates/offboarding/pipeline/pipeline.html +++ b/offboarding/templates/offboarding/pipeline/pipeline.html @@ -13,7 +13,7 @@