[UPDT] EMPLOYEE: Employee company experience scheduler

This commit is contained in:
Horilla
2023-10-18 11:03:27 +05:30
parent c437459f63
commit cc689c9a63
3 changed files with 44 additions and 2 deletions

View File

@@ -0,0 +1 @@
from employee import scheduler

View File

@@ -4,7 +4,7 @@ models.py
This module is used to register models for employee app
"""
from datetime import date
from datetime import date, datetime
from django.db import models
from django.contrib.auth.models import User, Permission
from django.utils.translation import gettext_lazy as trans
@@ -231,7 +231,7 @@ class EmployeeWorkInformation(models.Model):
basic_salary = models.IntegerField(null=True, blank=True, default=0)
salary_hour = models.IntegerField(null=True, blank=True, default=0)
additional_info = models.JSONField(null=True, blank=True)
experience = models.FloatField(null=True,blank=True, default=0)
history = HistoricalRecords(
related_name="employee_work_info_history",
)
@@ -243,6 +243,27 @@ class EmployeeWorkInformation(models.Model):
def save(self, *args, **kwargs):
self.full_clean()
super().save(*args, **kwargs)
def experience_calculator(self):
"""
This method is to calculate the default value for experience field
"""
joining_date = self.date_joining
if joining_date is None:
return 0
current_date = datetime.now().date()
# Calculate the difference between the current date and joining date
delta = current_date - joining_date
# Calculate the total number of days
total_days = delta.days
# Calculate the number of experience as a float
experience = total_days / 365.0
self.experience = experience
self.save()
return self
class EmployeeBankDetails(models.Model):

20
employee/scheduler.py Normal file
View File

@@ -0,0 +1,20 @@
from apscheduler.schedulers.background import BackgroundScheduler
def update_experience():
from employee.models import EmployeeWorkInformation
"""
This scheduled task to trigger the experience calculator
to update the employee work experience
"""
queryset = EmployeeWorkInformation.objects.filter(
employee_id__is_active=True
)
for instance in queryset:
instance.experience_calculator()
return
scheduler = BackgroundScheduler()
scheduler.add_job(update_experience, "interval", days=1)
scheduler.start()