diff --git a/employee/models.py b/employee/models.py index 8d3e1f18c..1096ac547 100644 --- a/employee/models.py +++ b/employee/models.py @@ -84,7 +84,9 @@ class Employee(models.Model): city = models.CharField(max_length=30, null=True, blank=True) zip = models.CharField(max_length=20, null=True, blank=True) dob = models.DateField(null=True, blank=True) - gender = models.CharField(max_length=10,null=True, choices=choice_gender, default="male") + gender = models.CharField( + max_length=10, null=True, choices=choice_gender, default="male" + ) qualification = models.CharField(max_length=50, blank=True, null=True) experience = models.IntegerField(null=True, blank=True) marital_status = models.CharField( @@ -208,15 +210,13 @@ class Employee(models.Model): This method is used to the employees current day shift status """ today = datetime.today() - now = datetime.now() - forecasted_check_out = today.replace( - hour=now.hour, minute=now.minute, second=now.second - ) attendance = self.employee_attendances.filter(attendance_date=today).first() + minimum_hour_seconds = strtime_seconds(getattr(attendance,"minimum_hour","0")) at_work = 0 forecasted_pending_hours = 0 if attendance: at_work = attendance.get_at_work_from_activities() + forecasted_pending_hours = max(0, (minimum_hour_seconds - at_work)) return { "forecasted_at_work": format_time(at_work), @@ -236,13 +236,17 @@ class Employee(models.Model): def get_archive_condition(self): from onboarding.models import OnboardingStage, OnboardingTask from recruitment.models import Stage, Recruitment - - reporting_manager_query = EmployeeWorkInformation.objects.filter(reporting_manager_id=self.pk) + + reporting_manager_query = EmployeeWorkInformation.objects.filter( + reporting_manager_id=self.pk + ) recruitment_stage_query = Stage.objects.filter(stage_managers=self.pk) onboarding_stage_query = OnboardingStage.objects.filter(employee_id=self.pk) onboarding_task_query = OnboardingTask.objects.filter(employee_id=self.pk) - recruitment_manager_query = Recruitment.objects.filter(recruitment_managers=self.pk) - + recruitment_manager_query = Recruitment.objects.filter( + recruitment_managers=self.pk + ) + if not ( reporting_manager_query.exists() or recruitment_stage_query.exists() @@ -263,11 +267,10 @@ class Employee(models.Model): related_models.append("Onboarding task manager") if recruitment_manager_query.exists(): related_models.append("Recruitment manager") - + related_models_dict = {"related_models": related_models} return related_models_dict - def __str__(self) -> str: last_name = ( self.employee_last_name if self.employee_last_name is not None else "" @@ -328,16 +331,19 @@ class Employee(models.Model): return self.save() return self + class EmployeeTag(models.Model): """ EmployeeTag Model """ - title = models.CharField(max_length=50, null=True, verbose_name=_('Title')) + + title = models.CharField(max_length=50, null=True, verbose_name=_("Title")) color = models.CharField(max_length=30, null=True) def __str__(self) -> str: return f"{self.title}" - + + class EmployeeWorkInformation(models.Model): """ EmployeeWorkInformation model