Files
ihrm/attendance/scheduler.py

51 lines
1.4 KiB
Python

import datetime
import sys
from apscheduler.schedulers.background import BackgroundScheduler
today = datetime.datetime.today()
def create_work_record(date=today):
from attendance.models import WorkRecords
from employee.models import Employee
work_records = WorkRecords.objects.all()
employees = Employee.objects.all()
if len(work_records.filter(date=date)) == len(employees):
return
else:
for employee in employees:
try:
shift = employee.employee_work_info.shift_id
WorkRecords.objects.get_or_create(
employee_id=employee,
date=date,
defaults={
"work_record_type": "DFT",
"shift_id": shift,
"message": "",
},
)
except:
pass
if not any(
cmd in sys.argv
for cmd in ["makemigrations", "migrate", "compilemessages", "flush", "shell"]
):
"""
Initializes and starts background tasks using APScheduler when the server is running.
"""
scheduler = BackgroundScheduler()
scheduler.add_job(
create_work_record, "interval", hours=3, misfire_grace_time=3600 * 3
)
scheduler.add_job(
create_work_record, "cron", hour=0, minute=30, misfire_grace_time=3600 * 9
)
scheduler.start()