From 34440ebf731bb806ba9b57d5550a3c41d7338598 Mon Sep 17 00:00:00 2001 From: ack Date: Sun, 19 Apr 2026 22:37:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D1=83=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D0=BF=D1=80=D0=BE=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- camlaps/forms.py | 10 ++++++++++ camlaps/templates/camlaps/job_list.html | 4 +++- camlaps/views.py | 6 +++--- 3 files changed, 16 insertions(+), 4 deletions(-) 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):