migrated to redis

This commit is contained in:
nvrl committed 2026-04-24 18:42:53 +02:00
1 parent 33e4b0376e
commit 9a3f6b5db8
9 files changed
+112 -45

No files matched your search

+24
View File
@@ -1,7 +1,16 @@
from datetime import timedelta
from rest_framework import serializers
from api.models import Banner, Job, SystemConfig
_INTERVAL_PERIOD_TO_TIMEDELTA = {
"days": lambda every: timedelta(days=every),
"hours": lambda every: timedelta(hours=every),
"minutes": lambda every: timedelta(minutes=every),
"seconds": lambda every: timedelta(seconds=every),
}
class SystemConfigSerializer(serializers.ModelSerializer):
class Meta:
@@ -17,6 +26,21 @@ class SystemConfigSerializer(serializers.ModelSerializer):
class JobSerializer(serializers.ModelSerializer):
name_display = serializers.CharField(source="get_name_display", read_only=True)
next_run = serializers.SerializerMethodField()
def get_next_run(self, obj):
from django_celery_beat.models import PeriodicTask
task = PeriodicTask.objects.filter(name=f"job:{obj.name}", enabled=True).first()
if not task or not task.interval:
return None
base = task.last_run_at or obj.last_run
if not base:
return None
delta_fn = _INTERVAL_PERIOD_TO_TIMEDELTA.get(task.interval.period)
if not delta_fn:
return None
return base + delta_fn(task.interval.every)
class Meta:
model = Job