50 lines
2.2 KiB
Python
50 lines
2.2 KiB
Python
from django.db import models
|
|
from django.utils.timezone import now
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
logger.info("Загрузка модели ScheduledTask")
|
|
|
|
class ScheduledTask(models.Model):
|
|
task_name = models.CharField(max_length=255)
|
|
function_path = models.CharField(max_length=255)
|
|
minutes = models.CharField(max_length=255)
|
|
hours = models.CharField(max_length=255)
|
|
months = models.CharField(max_length=255)
|
|
weekdays = models.CharField(max_length=100, blank=True, default="")
|
|
active = models.BooleanField(default=True)
|
|
last_run = models.DateTimeField(null=True, blank=True)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
def clean_weekdays(self):
|
|
"""Приводим список в строку при сохранении."""
|
|
if isinstance(self.weekdays, list):
|
|
self.weekdays = ",".join(map(str, self.weekdays))
|
|
|
|
class Meta:
|
|
verbose_name = "Запланированная задача"
|
|
verbose_name_plural = "Запланированные задачи"
|
|
|
|
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 |