mirror of
https://github.com/narrrl/holy-flavor-rater.git
synced 2026-11-04 00:47:02 +01:00
migrated to redis
This commit is contained in:
1 parent
33e4b0376e
commit
9a3f6b5db8
9 files changed
+112
-45
No files matched your search
@@ -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
|
||||
|
||||
Reference in new issue
Block a user