Страница с Кубсатами

This commit is contained in:
2025-11-19 17:36:39 +03:00
parent 4d7cc9f667
commit 66e1929978
12 changed files with 1429 additions and 159 deletions

View File

@@ -545,6 +545,124 @@ class SourceForm(forms.ModelForm):
class KubsatFilterForm(forms.Form):
"""Форма фильтров для страницы Кубсат"""
satellites = forms.ModelMultipleChoiceField(
queryset=Satellite.objects.all().order_by('name'),
label='Спутники',
required=False,
widget=forms.SelectMultiple(attrs={'class': 'form-select', 'size': '5'})
)
band = forms.ModelChoiceField(
queryset=None,
label='Полоса спутника',
required=False,
widget=forms.Select(attrs={'class': 'form-select'})
)
polarization = forms.ModelMultipleChoiceField(
queryset=Polarization.objects.all().order_by('name'),
label='Поляризация',
required=False,
widget=forms.SelectMultiple(attrs={'class': 'form-select', 'size': '3'})
)
frequency_min = forms.FloatField(
label='Центральная частота от (МГц)',
required=False,
widget=forms.NumberInput(attrs={'class': 'form-control', 'step': '0.001'})
)
frequency_max = forms.FloatField(
label='Центральная частота до (МГц)',
required=False,
widget=forms.NumberInput(attrs={'class': 'form-control', 'step': '0.001'})
)
freq_range_min = forms.FloatField(
label='Полоса от (МГц)',
required=False,
widget=forms.NumberInput(attrs={'class': 'form-control', 'step': '0.001'})
)
freq_range_max = forms.FloatField(
label='Полоса до (МГц)',
required=False,
widget=forms.NumberInput(attrs={'class': 'form-control', 'step': '0.001'})
)
modulation = forms.ModelMultipleChoiceField(
queryset=Modulation.objects.all().order_by('name'),
label='Модуляция',
required=False,
widget=forms.SelectMultiple(attrs={'class': 'form-select', 'size': '3'})
)
object_type = forms.ModelMultipleChoiceField(
queryset=None,
label='Тип объекта',
required=False,
widget=forms.SelectMultiple(attrs={'class': 'form-select', 'size': '3'})
)
# Заглушка для принадлежности объекта
object_ownership = forms.MultipleChoiceField(
choices=[],
label='Принадлежность объекта',
required=False,
widget=forms.SelectMultiple(attrs={'class': 'form-select', 'size': '3'})
)
objitem_count = forms.ChoiceField(
choices=[('', 'Все'), ('1', '1'), ('2+', '2 и более')],
label='Количество привязанных ObjItem',
required=False,
widget=forms.RadioSelect()
)
# Фиктивные фильтры
has_plans = forms.ChoiceField(
choices=[('', 'Все'), ('yes', 'Да'), ('no', 'Нет')],
label='Планы на',
required=False,
widget=forms.RadioSelect()
)
success_1 = forms.ChoiceField(
choices=[('', 'Все'), ('yes', 'Да'), ('no', 'Нет')],
label='Успех 1',
required=False,
widget=forms.RadioSelect()
)
success_2 = forms.ChoiceField(
choices=[('', 'Все'), ('yes', 'Да'), ('no', 'Нет')],
label='Успех 2',
required=False,
widget=forms.RadioSelect()
)
date_from = forms.DateField(
label='Дата от',
required=False,
widget=forms.DateInput(attrs={'class': 'form-control', 'type': 'date'})
)
date_to = forms.DateField(
label='Дата до',
required=False,
widget=forms.DateInput(attrs={'class': 'form-control', 'type': 'date'})
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
from mainapp.models import Band, ObjectInfo
self.fields['band'].queryset = Band.objects.all().order_by('name')
self.fields['object_type'].queryset = ObjectInfo.objects.all().order_by('name')
class TransponderForm(forms.ModelForm):
"""
Форма для создания и редактирования транспондеров.