Поправил привязку вч загрузки, сделал модальное окно.
This commit is contained in:
@@ -362,12 +362,13 @@ class LinkVchSigmaView(LoginRequiredMixin, FormView):
|
||||
form_class = VchLinkForm
|
||||
|
||||
def form_valid(self, form):
|
||||
freq = form.cleaned_data["value1"]
|
||||
# value1 больше не используется - погрешность частоты определяется автоматически
|
||||
freq_range = form.cleaned_data["value2"]
|
||||
# ku_range = float(form.cleaned_data['ku_range'])
|
||||
sat_id = form.cleaned_data["sat_choice"]
|
||||
# print(freq, freq_range, ku_range, sat_id.pk)
|
||||
count_all, link_count = compare_and_link_vch_load(sat_id, freq, freq_range, 1)
|
||||
|
||||
# Передаём 0 для eps_freq и ku_range, так как они не используются
|
||||
count_all, link_count = compare_and_link_vch_load(sat_id, 0, freq_range, 0)
|
||||
|
||||
messages.success(
|
||||
self.request, f"Привязано {link_count} из {count_all} объектов"
|
||||
)
|
||||
@@ -479,6 +480,84 @@ class LyngsatDataAPIView(LoginRequiredMixin, View):
|
||||
return JsonResponse({'error': str(e)}, status=500)
|
||||
|
||||
|
||||
class SigmaParameterDataAPIView(LoginRequiredMixin, View):
|
||||
"""API для получения данных SigmaParameter"""
|
||||
|
||||
def get(self, request, parameter_id):
|
||||
from .models import Parameter
|
||||
|
||||
try:
|
||||
parameter = Parameter.objects.select_related(
|
||||
'id_satellite',
|
||||
'polarization',
|
||||
'modulation',
|
||||
'standard'
|
||||
).prefetch_related(
|
||||
'sigma_parameter__mark',
|
||||
'sigma_parameter__id_satellite',
|
||||
'sigma_parameter__polarization',
|
||||
'sigma_parameter__modulation',
|
||||
'sigma_parameter__standard'
|
||||
).get(id=parameter_id)
|
||||
|
||||
# Получаем все связанные SigmaParameter
|
||||
sigma_params = parameter.sigma_parameter.all()
|
||||
|
||||
sigma_data = []
|
||||
for sigma in sigma_params:
|
||||
# Получаем отметки
|
||||
marks = []
|
||||
for mark in sigma.mark.all().order_by('-timestamp'):
|
||||
mark_str = '+' if mark.mark else '-'
|
||||
date_str = '-'
|
||||
if mark.timestamp:
|
||||
local_time = timezone.localtime(mark.timestamp)
|
||||
date_str = local_time.strftime("%d.%m.%Y %H:%M")
|
||||
marks.append({
|
||||
'mark': mark_str,
|
||||
'date': date_str
|
||||
})
|
||||
|
||||
# Форматируем даты начала и окончания
|
||||
datetime_begin_str = '-'
|
||||
if sigma.datetime_begin:
|
||||
local_time = timezone.localtime(sigma.datetime_begin)
|
||||
datetime_begin_str = local_time.strftime("%d.%m.%Y %H:%M")
|
||||
|
||||
datetime_end_str = '-'
|
||||
if sigma.datetime_end:
|
||||
local_time = timezone.localtime(sigma.datetime_end)
|
||||
datetime_end_str = local_time.strftime("%d.%m.%Y %H:%M")
|
||||
|
||||
sigma_data.append({
|
||||
'id': sigma.id,
|
||||
'satellite': sigma.id_satellite.name if sigma.id_satellite else '-',
|
||||
'frequency': f"{sigma.frequency:.3f}" if sigma.frequency else '-',
|
||||
'transfer_frequency': f"{sigma.transfer_frequency:.3f}" if sigma.transfer_frequency else '-',
|
||||
'freq_range': f"{sigma.freq_range:.3f}" if sigma.freq_range else '-',
|
||||
'polarization': sigma.polarization.name if sigma.polarization else '-',
|
||||
'modulation': sigma.modulation.name if sigma.modulation else '-',
|
||||
'standard': sigma.standard.name if sigma.standard else '-',
|
||||
'bod_velocity': f"{sigma.bod_velocity:.0f}" if sigma.bod_velocity else '-',
|
||||
'snr': f"{sigma.snr:.1f}" if sigma.snr is not None else '-',
|
||||
'power': f"{sigma.power:.1f}" if sigma.power is not None else '-',
|
||||
'status': sigma.status or '-',
|
||||
'packets': 'Да' if sigma.packets else 'Нет' if sigma.packets is not None else '-',
|
||||
'datetime_begin': datetime_begin_str,
|
||||
'datetime_end': datetime_end_str,
|
||||
'marks': marks
|
||||
})
|
||||
|
||||
return JsonResponse({
|
||||
'parameter_id': parameter.id,
|
||||
'sigma_parameters': sigma_data
|
||||
})
|
||||
except Parameter.DoesNotExist:
|
||||
return JsonResponse({'error': 'Parameter не найден'}, status=404)
|
||||
except Exception as e:
|
||||
return JsonResponse({'error': str(e)}, status=500)
|
||||
|
||||
|
||||
class ProcessKubsatView(LoginRequiredMixin, FormMessageMixin, FormView):
|
||||
template_name = "mainapp/process_kubsat.html"
|
||||
form_class = NewEventForm
|
||||
@@ -585,6 +664,10 @@ class ObjItemListView(LoginRequiredMixin, View):
|
||||
"parameter_obj__modulation",
|
||||
"parameter_obj__standard",
|
||||
)
|
||||
.prefetch_related(
|
||||
"parameter_obj__sigma_parameter",
|
||||
"parameter_obj__sigma_parameter__polarization",
|
||||
)
|
||||
.filter(parameter_obj__id_satellite_id__in=selected_satellites)
|
||||
)
|
||||
else:
|
||||
@@ -598,6 +681,9 @@ class ObjItemListView(LoginRequiredMixin, View):
|
||||
"parameter_obj__polarization",
|
||||
"parameter_obj__modulation",
|
||||
"parameter_obj__standard",
|
||||
).prefetch_related(
|
||||
"parameter_obj__sigma_parameter",
|
||||
"parameter_obj__sigma_parameter__polarization",
|
||||
)
|
||||
|
||||
if freq_min is not None and freq_min.strip() != "":
|
||||
@@ -872,6 +958,23 @@ class ObjItemListView(LoginRequiredMixin, View):
|
||||
# Check if LyngSat source is linked
|
||||
source_type = "ТВ" if obj.lyngsat_source else "-"
|
||||
|
||||
# Check if SigmaParameter is linked
|
||||
has_sigma = False
|
||||
sigma_info = "-"
|
||||
if param:
|
||||
sigma_count = param.sigma_parameter.count()
|
||||
if sigma_count > 0:
|
||||
has_sigma = True
|
||||
# Get first sigma parameter for preview
|
||||
first_sigma = param.sigma_parameter.first()
|
||||
if first_sigma:
|
||||
sigma_freq = f"{first_sigma.frequency:.3f}" if first_sigma.frequency else "-"
|
||||
sigma_range = f"{first_sigma.freq_range:.3f}" if first_sigma.freq_range else "-"
|
||||
sigma_pol = first_sigma.polarization.name if first_sigma.polarization else "-"
|
||||
# Сокращаем поляризацию
|
||||
sigma_pol_short = sigma_pol[0] if sigma_pol and sigma_pol != "-" else "-"
|
||||
sigma_info = f"{sigma_freq}/{sigma_range}/{sigma_pol_short}"
|
||||
|
||||
processed_objects.append(
|
||||
{
|
||||
"id": obj.id,
|
||||
@@ -896,6 +999,8 @@ class ObjItemListView(LoginRequiredMixin, View):
|
||||
"is_average": is_average,
|
||||
"source_type": source_type,
|
||||
"standard": standard_name,
|
||||
"has_sigma": has_sigma,
|
||||
"sigma_info": sigma_info,
|
||||
"obj": obj,
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user