добавил обработчик задач
All checks were successful
Deploy timelaps / deploy (push) Successful in 5s

This commit is contained in:
ack
2026-04-19 19:41:33 +03:00
parent a3df30184e
commit 4a10958445
11 changed files with 434 additions and 7 deletions

View File

@@ -3,13 +3,51 @@
{% block content %}
<div class="d-flex justify-content-between align-items-center mb-4">
<h2>Твои камеры</h2>
{% if storage_available %}
<span class="badge bg-success">Storage доступен</span>
{% else %}
<span class="badge bg-danger">Storage недоступен</span>
{% endif %}
<div class="d-flex gap-2 align-items-center">
{% if storage_available %}
<span class="badge bg-success">Storage доступен</span>
{% else %}
<span class="badge bg-danger">Storage недоступен</span>
{% endif %}
<form method="post" action="{% url 'camlaps:discover_cameras' %}">
{% csrf_token %}
<button type="submit" class="btn btn-sm btn-outline-primary">Найти камеры</button>
</form>
</div>
</div>
{% if added is not None %}
<div class="alert alert-success py-2">
Добавление завершено: добавлено новых камер — {{ added }}.
</div>
{% endif %}
{% if discovered_candidates is not None %}
<div class="card border-info mb-3">
<div class="card-body">
<h5 class="card-title">Найдено новых камер: {{ discovered_count }}</h5>
{% if discovered_count %}
<form method="post" action="{% url 'camlaps:apply_discovered_cameras' %}">
{% csrf_token %}
<div class="row g-2 mb-3">
{% for c in discovered_candidates %}
<div class="col-12 col-md-6">
<label class="form-check-label d-flex align-items-center gap-2">
<input class="form-check-input" type="checkbox" name="selected_storage_paths" value="{{ c.storage_path }}" checked>
<span>{{ c.name }} <span class="text-muted">({{ c.storage_path }})</span></span>
</label>
</div>
{% endfor %}
</div>
<button type="submit" class="btn btn-primary btn-sm">Добавить выбранные камеры</button>
</form>
{% else %}
<div class="text-muted">Новых папок камер не найдено.</div>
{% endif %}
</div>
</div>
{% endif %}
<div class="row row-cols-1 row-cols-md-3 g-4">
{% for camera in cameras %}
<div class="col">

View File

@@ -29,6 +29,15 @@
<div class="text-muted">FPS</div>
<div class="fw-semibold">{{ job.fps }}</div>
</div>
<div class="col-md-6">
<div class="text-muted">Кадры</div>
<div class="fw-semibold">
{{ job.frames_processed }}
{% if job.frames_total %}
/ {{ job.frames_total }}
{% endif %}
</div>
</div>
<div class="col-md-6">
<div class="text-muted">Ночь</div>
<div class="fw-semibold">

View File

@@ -3,8 +3,22 @@
{% block content %}
<div class="d-flex justify-content-between align-items-center mb-4">
<h2>Очередь задач</h2>
<form method="post" action="{% url 'camlaps:start_queue' %}">
{% csrf_token %}
<button type="submit" class="btn btn-primary btn-sm">Старт очереди</button>
</form>
</div>
{% if queue_started == 'none' %}
<div class="alert alert-warning py-2">Очередь пуста: задач со статусом «Запланировано» нет.</div>
{% elif queue_started == 'worker' %}
<div class="alert alert-success py-2">Воркер очереди запущен. Обнови страницу через несколько секунд.</div>
{% elif queue_started == 'error' %}
<div class="alert alert-danger py-2">Не удалось запустить воркер. Проверь логи Django.</div>
{% elif queue_started %}
<div class="alert alert-success py-2">Запущена задача #{{ queue_started }}.</div>
{% endif %}
<div class="table-responsive">
<table class="table table-striped align-middle">
<thead>