46 lines
1.2 KiB
Python
46 lines
1.2 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)
|
|
|
|
scheduler.start()
|