40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
import logging
|
|
|
|
from celery import shared_task
|
|
|
|
from attendance.services import run_attendance_auto_sync
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@shared_task(bind=True)
|
|
def dispatch_attendance_auto_sync(self):
|
|
"""Periodic dispatcher for attendance auto-sync settings."""
|
|
try:
|
|
settings = run_attendance_auto_sync(force=False)
|
|
return {
|
|
"status": settings.last_status,
|
|
"success": settings.last_success_count,
|
|
"errors": settings.last_error_count,
|
|
}
|
|
except Exception as exc:
|
|
logger.exception(
|
|
"Attendance auto-sync dispatcher failed",
|
|
extra={
|
|
"event": "attendance.auto_sync.dispatch_failed",
|
|
"error_type": type(exc).__name__,
|
|
},
|
|
)
|
|
raise
|
|
|
|
|
|
@shared_task(bind=True)
|
|
def run_attendance_auto_sync_now(self):
|
|
"""Run attendance auto-sync immediately using the saved settings."""
|
|
settings = run_attendance_auto_sync(force=True)
|
|
return {
|
|
"status": settings.last_status,
|
|
"success": settings.last_success_count,
|
|
"errors": settings.last_error_count,
|
|
}
|