diff --git a/camlaps/forms.py b/camlaps/forms.py index 7f0e1b4..0532031 100644 --- a/camlaps/forms.py +++ b/camlaps/forms.py @@ -1,9 +1,19 @@ +from datetime import timedelta + from django import forms +from django.utils import timezone from .models import TimelapseJob class TimelapseJobCreateForm(forms.ModelForm): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if not self.is_bound: + today = timezone.localdate() + self.initial.setdefault('date_to', today) + self.initial.setdefault('date_from', today - timedelta(days=7)) + class Meta: model = TimelapseJob fields = ( diff --git a/camlaps/templates/camlaps/job_list.html b/camlaps/templates/camlaps/job_list.html index def7e34..23438a1 100644 --- a/camlaps/templates/camlaps/job_list.html +++ b/camlaps/templates/camlaps/job_list.html @@ -2,7 +2,7 @@ {% block content %} {% if has_active_jobs %} - + {% endif %}

Очередь задач

@@ -25,6 +25,8 @@
Воркер очереди запущен. Обнови страницу через несколько секунд.
{% elif queue_started == 'error' %}
Не удалось запустить воркер. Проверь логи Django.
+{% elif queue_started == 'running' %} +
Задача уже выполняется.
{% elif queue_started %}
Запущена задача #{{ queue_started }}.
{% endif %} diff --git a/camlaps/views.py b/camlaps/views.py index 765e452..aa044cf 100644 --- a/camlaps/views.py +++ b/camlaps/views.py @@ -193,7 +193,7 @@ def run_job_now(request, job_id: int): if job.status == TimelapseJob.Status.RUNNING: logger.info('job:run_now:done job_id=%s blocked=running', job_id) - return redirect(f"{reverse('camlaps:job_detail', kwargs={'job_id': job_id})}?run_now=running") + return redirect(f"{reverse('camlaps:job_list')}?started=running") cmd = [sys.executable, 'manage.py', 'run_timelapse_worker', '--job-id', str(job_id)] kwargs = { @@ -208,10 +208,10 @@ def run_job_now(request, job_id: int): try: subprocess.Popen(cmd, **kwargs) logger.info('job:run_now:done job_id=%s worker_started=true', job_id) - return redirect(f"{reverse('camlaps:job_detail', kwargs={'job_id': job_id})}?run_now=started") + return redirect(f"{reverse('camlaps:job_list')}?started={job_id}") except Exception: logger.exception('job:run_now:error job_id=%s', job_id) - return redirect(f"{reverse('camlaps:job_detail', kwargs={'job_id': job_id})}?run_now=error") + return redirect(f"{reverse('camlaps:job_list')}?started=error") def job_create(request, camera_id: int):