From 2da0bdf2a6976c5da436769e8473be35f67a400b Mon Sep 17 00:00:00 2001 From: Daniel M Date: Wed, 20 Nov 2024 16:15:53 -0500 Subject: [PATCH] wip --- scheduler/admin/old_task_models.py | 1 + scheduler/management/commands/import.py | 3 ++- ...id_repeatabletask_new_task_id_and_more.py} | 24 ++++++++++++++++++- scheduler/models/__init__.py | 14 +++++++---- scheduler/models/scheduled_task.py | 1 + 5 files changed, 37 insertions(+), 6 deletions(-) rename scheduler/migrations/{0019_task.py => 0019_task_crontask_new_task_id_repeatabletask_new_task_id_and_more.py} (88%) diff --git a/scheduler/admin/old_task_models.py b/scheduler/admin/old_task_models.py index 6f42849..905f752 100644 --- a/scheduler/admin/old_task_models.py +++ b/scheduler/admin/old_task_models.py @@ -134,6 +134,7 @@ class TaskAdmin(admin.ModelAdmin): "function_string", "is_scheduled", "queue", + "new_task_id", ) list_display_links = ("name",) readonly_fields = ("job_id",) diff --git a/scheduler/management/commands/import.py b/scheduler/management/commands/import.py index a89ddc4..bbc7337 100644 --- a/scheduler/management/commands/import.py +++ b/scheduler/management/commands/import.py @@ -52,7 +52,8 @@ def create_task_from_dict(task_dict: Dict[str, Any], update): if not settings.USE_TZ and not timezone.is_naive(target): target = timezone.make_naive(target) kwargs["scheduled_time"] = target - model_fields = set(map(lambda field: field.attname, Task._meta.get_fields())) + model_fields = filter(lambda field:hasattr(field,'attname'),Task._meta.get_fields()) + model_fields = set(map(lambda field: field.attname, model_fields)) keys_to_ignore = list(filter(lambda _k: _k not in model_fields, kwargs.keys())) for k in keys_to_ignore: del kwargs[k] diff --git a/scheduler/migrations/0019_task.py b/scheduler/migrations/0019_task_crontask_new_task_id_repeatabletask_new_task_id_and_more.py similarity index 88% rename from scheduler/migrations/0019_task.py rename to scheduler/migrations/0019_task_crontask_new_task_id_repeatabletask_new_task_id_and_more.py index 7d1681f..bfdbcc1 100644 --- a/scheduler/migrations/0019_task.py +++ b/scheduler/migrations/0019_task_crontask_new_task_id_repeatabletask_new_task_id_and_more.py @@ -1,5 +1,6 @@ -# Generated by Django 5.1.3 on 2024-11-19 23:36 +# Generated by Django 5.1.3 on 2024-11-20 20:32 +import django.db.models.deletion import scheduler.models.task from django.db import migrations, models @@ -161,4 +162,25 @@ class Migration(migrations.Migration): ), ], ), + migrations.AddField( + model_name="crontask", + name="new_task_id", + field=models.ForeignKey( + blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="scheduler.task" + ), + ), + migrations.AddField( + model_name="repeatabletask", + name="new_task_id", + field=models.ForeignKey( + blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="scheduler.task" + ), + ), + migrations.AddField( + model_name="scheduledtask", + name="new_task_id", + field=models.ForeignKey( + blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="scheduler.task" + ), + ), ] diff --git a/scheduler/models/__init__.py b/scheduler/models/__init__.py index 59baf5a..044f774 100644 --- a/scheduler/models/__init__.py +++ b/scheduler/models/__init__.py @@ -1,4 +1,10 @@ -from .args import TaskKwarg, TaskArg, BaseTaskArg # noqa: F401 -from .queue import Queue # noqa: F401 -from .scheduled_task import BaseTask, ScheduledTask, RepeatableTask, CronTask # noqa: F401 -from .task import Task # noqa: F401 +from .args import TaskKwarg, TaskArg +from .scheduled_task import BaseTask, ScheduledTask, RepeatableTask, CronTask +from .queue import Queue +from .task import Task + +__all__ = [ + "TaskKwarg", "TaskArg", + "ScheduledTask", "RepeatableTask", "CronTask", + "Queue", "Task", +] diff --git a/scheduler/models/scheduled_task.py b/scheduler/models/scheduled_task.py index a150f06..20fdd12 100644 --- a/scheduler/models/scheduled_task.py +++ b/scheduler/models/scheduled_task.py @@ -124,6 +124,7 @@ class BaseTask(models.Model): >0: Result expires after n seconds.""" ), ) + new_task_id = models.ForeignKey('Task', on_delete=models.CASCADE, blank=True, null=True) def callable_func(self): """Translate callable string to callable"""