Files
timelaps/camlaps/migrations/0001_initial.py
2026-04-19 18:31:47 +03:00

66 lines
4.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Generated by Django 6.0.4 on 2026-04-19 14:42
import datetime
import django.core.validators
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Camera',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=120, verbose_name='Наименование')),
('slug', models.SlugField(max_length=80, unique=True, verbose_name='Код камеры')),
('storage_path', models.CharField(help_text='Относительный путь внутри /app/storage, например: Camera3', max_length=255, verbose_name='Путь в storage')),
('rtsp_url', models.URLField(blank=True, verbose_name='RTSP URL (опционально)')),
('expected_width', models.PositiveIntegerField(blank=True, null=True, verbose_name='Ожидаемая ширина')),
('expected_height', models.PositiveIntegerField(blank=True, null=True, verbose_name='Ожидаемая высота')),
('is_active', models.BooleanField(default=True, verbose_name='Активна')),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
],
options={
'verbose_name': 'Камера',
'verbose_name_plural': 'Камеры',
'ordering': ['name'],
},
),
migrations.CreateModel(
name='TimelapseJob',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date_from', models.DateField(verbose_name='Дата начала выборки')),
('date_to', models.DateField(verbose_name='Дата окончания выборки')),
('sampling_preset', models.PositiveSmallIntegerField(choices=[(0, '1 кадр / 15 минут'), (1, '1 кадр / 30 минут'), (2, '1 кадр / 45 минут'), (3, '1 кадр / час'), (4, '1 кадр / 1.5 часа'), (5, '1 кадр / 2 часа'), (6, '1 кадр / 3 часа'), (7, '1 кадр / 4 часа'), (8, '1 кадр / 6 часов'), (9, '1 кадр / 12 часов'), (10, '1 кадр / сутки')], default=3, verbose_name='Частота выборки')),
('fps', models.PositiveSmallIntegerField(default=25, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(120)], verbose_name='FPS итогового видео')),
('include_night', models.BooleanField(default=True, verbose_name='Включать ночные кадры')),
('day_start_time', models.TimeField(default=datetime.time(6, 0), verbose_name='Начало дня')),
('day_end_time', models.TimeField(default=datetime.time(22, 0), verbose_name='Конец дня')),
('status', models.CharField(choices=[('planned', 'Запланировано'), ('running', 'В работе'), ('success', 'Успешно'), ('error', 'Ошибка')], db_index=True, default='planned', max_length=16)),
('progress_percent', models.PositiveSmallIntegerField(default=0, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(100)], verbose_name='Прогресс, %')),
('frames_total', models.PositiveIntegerField(blank=True, null=True, verbose_name='Всего кадров')),
('frames_processed', models.PositiveIntegerField(default=0, verbose_name='Обработано кадров')),
('output_rel_path', models.CharField(blank=True, max_length=255, verbose_name='Путь к видео в storage')),
('error_message', models.TextField(blank=True, verbose_name='Текст ошибки')),
('created_at', models.DateTimeField(auto_now_add=True)),
('started_at', models.DateTimeField(blank=True, null=True)),
('finished_at', models.DateTimeField(blank=True, null=True)),
('camera', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='jobs', to='camlaps.camera', verbose_name='Камера')),
],
options={
'verbose_name': 'Задание таймлапса',
'verbose_name_plural': 'Задания таймлапса',
'ordering': ['-created_at'],
},
),
]