diff --git a/dbapp/mainapp/admin.py b/dbapp/mainapp/admin.py index 752e43c..1dc399e 100644 --- a/dbapp/mainapp/admin.py +++ b/dbapp/mainapp/admin.py @@ -25,7 +25,6 @@ from .models import ( Standard, SigmaParMark, SigmaParameter, - SourceType, Parameter, Satellite, Mirror, @@ -336,14 +335,6 @@ class ModulationAdmin(BaseAdmin): ordering = ("name",) -@admin.register(SourceType) -class SourceTypeAdmin(BaseAdmin): - """Админ-панель для модели SourceType.""" - list_display = ("name",) - search_fields = ("name",) - ordering = ("name",) - - @admin.register(Standard) class StandardAdmin(BaseAdmin): """Админ-панель для модели Standard.""" diff --git a/dbapp/mainapp/forms.py b/dbapp/mainapp/forms.py index 85b7b59..aaa5c56 100644 --- a/dbapp/mainapp/forms.py +++ b/dbapp/mainapp/forms.py @@ -161,6 +161,32 @@ class FillLyngsatDataForm(forms.Form): }), help_text="Игнорировать кеш и получить свежие данные с сайта" ) + + +class LinkLyngsatForm(forms.Form): + """Форма для привязки источников LyngSat к объектам""" + + satellites = forms.ModelMultipleChoiceField( + queryset=Satellite.objects.all().order_by('name'), + label="Выберите спутники", + widget=forms.SelectMultiple(attrs={ + 'class': 'form-select', + 'size': '10' + }), + required=False, + help_text="Оставьте пустым для обработки всех спутников" + ) + + frequency_tolerance = forms.FloatField( + label="Допуск по частоте (МГц)", + initial=0.5, + min_value=0, + widget=forms.NumberInput(attrs={ + 'class': 'form-control', + 'step': '0.1' + }), + help_text="Допустимое отклонение частоты при сравнении" + ) class ParameterForm(forms.ModelForm): """ Форма для создания и редактирования параметров ВЧ загрузки. diff --git a/dbapp/mainapp/migrations/0009_remove_sourcetype_add_lyngsat.py b/dbapp/mainapp/migrations/0009_remove_sourcetype_add_lyngsat.py new file mode 100644 index 0000000..dffee81 --- /dev/null +++ b/dbapp/mainapp/migrations/0009_remove_sourcetype_add_lyngsat.py @@ -0,0 +1,27 @@ +# Generated by Django 5.2.7 on 2025-11-11 19:02 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('lyngsatapp', '0002_alter_lyngsat_last_update'), + ('mainapp', '0008_remove_sourcetype_objitem_objitem_source_type_id_and_more'), + ] + + operations = [ + migrations.RemoveField( + model_name='objitem', + name='source_type_id', + ), + migrations.AddField( + model_name='objitem', + name='lyngsat_source', + field=models.ForeignKey(blank=True, help_text='Связанный источник из базы LyngSat (ТВ)', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='objitems', to='lyngsatapp.lyngsat', verbose_name='Источник LyngSat'), + ), + migrations.DeleteModel( + name='SourceType', + ), + ] diff --git a/dbapp/mainapp/models.py b/dbapp/mainapp/models.py index c3b8732..9f2454b 100644 --- a/dbapp/mainapp/models.py +++ b/dbapp/mainapp/models.py @@ -233,27 +233,7 @@ class Satellite(models.Model): ordering = ["name"] -class SourceType(models.Model): - """ - Модель типа источника сигнала. - Классифицирует источники по типам (наземный, морской, воздушный и т.д.). - """ - # Основные поля - name = models.CharField( - max_length=50, - unique=True, - verbose_name="Тип источника", - db_index=True, - help_text="Тип источника сигнала", - ) - def __str__(self): - return self.name - - class Meta: - verbose_name = "Тип источника" - verbose_name_plural = "Типы источников" - ordering = ["name"] class ObjItemQuerySet(models.QuerySet): """Custom QuerySet для модели ObjItem с оптимизированными запросами""" @@ -264,7 +244,7 @@ class ObjItemQuerySet(models.QuerySet): "geo_obj", "updated_by__user", "created_by__user", - "source_type_obj", + "lyngsat_source", "parameter_obj", "parameter_obj__id_satellite", "parameter_obj__polarization", @@ -349,14 +329,14 @@ class ObjItem(models.Model): verbose_name="Изменен пользователем", help_text="Пользователь, последним изменивший запись", ) - source_type_id = models.ForeignKey( - SourceType, + lyngsat_source = models.ForeignKey( + "lyngsatapp.LyngSat", on_delete=models.SET_NULL, - related_name="objitems_sourcetype", + related_name="objitems", null=True, blank=True, - verbose_name="Тип источника", - help_text="Тип источника сигнала", + verbose_name="Источник LyngSat", + help_text="Связанный источник из базы LyngSat (ТВ)", ) # Custom manager diff --git a/dbapp/mainapp/templates/mainapp/actions.html b/dbapp/mainapp/templates/mainapp/actions.html index d940219..786f7df 100644 --- a/dbapp/mainapp/templates/mainapp/actions.html +++ b/dbapp/mainapp/templates/mainapp/actions.html @@ -184,6 +184,27 @@ + + +
Автоматическая привязка источников из базы LyngSat к объектам по частоте и поляризации. Объекты с привязанными источниками отображаются как "ТВ".
+ + Привязать источники + +