from django.db import models from django.utils.timezone import now import logging logger = logging.getLogger(__name__) logger.info("Загрузка модели ScheduledTask") def get_available_functions(): from scheduler.utils import get_project_functions return [(path, name) for path, name in get_project_functions()] class ScheduledTask(models.Model): task_name = models.CharField(max_length=255, verbose_name="Название задачи") function_path = models.CharField( max_length=500, choices=get_available_functions, verbose_name="Путь к функции (модуль.функция)", ) minutes = models.CharField(max_length=255, verbose_name="Минуты", default="*") hours = models.CharField(max_length=255, verbose_name="Часы", default="*") days = models.CharField(max_length=255, verbose_name="Дни", default="*") months = models.CharField(max_length=255, verbose_name="Месяцы", default="*") weekdays = models.JSONField(default=list, verbose_name="Дни недели") active = models.BooleanField(default=True, verbose_name="Активно") last_run = models.DateTimeField(blank=True, null=True, verbose_name="Последний запуск") def __str__(self): return self.task_name def clean_weekdays(self): """Приводим список в строку при сохранении.""" if isinstance(self.weekdays, list): self.weekdays = ",".join(map(str, self.weekdays)) class Meta: verbose_name = "Запланированная задача" verbose_name_plural = "Запланированные задачи"