Поправил теханализ
This commit is contained in:
@@ -138,7 +138,17 @@
|
|||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
<i class="bi bi-info-circle"></i>
|
<i class="bi bi-info-circle"></i>
|
||||||
Будут обновлены только точки с отсутствующими данными (модуляция "-", символьная скорость -1 или 0, стандарт "-").
|
<strong>Будут обновлены точки с отсутствующими данными:</strong>
|
||||||
|
<ul class="mb-0 mt-2">
|
||||||
|
<li>Модуляция (если "-")</li>
|
||||||
|
<li>Символьная скорость (если -1, 0 или пусто)</li>
|
||||||
|
<li>Стандарт (если "-")</li>
|
||||||
|
<li>Частота (если 0, -1 или пусто)</li>
|
||||||
|
<li>Полоса частот (если 0, -1 или пусто)</li>
|
||||||
|
<li>Поляризация (если "-")</li>
|
||||||
|
<li>Транспондер (если не привязан)</li>
|
||||||
|
<li>Источник LyngSat (если не привязан)</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ from ..models import (
|
|||||||
Parameter,
|
Parameter,
|
||||||
)
|
)
|
||||||
from ..mixins import RoleRequiredMixin
|
from ..mixins import RoleRequiredMixin
|
||||||
from ..utils import parse_pagination_params
|
from ..utils import parse_pagination_params, find_matching_transponder, find_matching_lyngsat
|
||||||
|
|
||||||
|
|
||||||
class TechAnalyzeEntryView(LoginRequiredMixin, View):
|
class TechAnalyzeEntryView(LoginRequiredMixin, View):
|
||||||
@@ -190,6 +190,9 @@ class LinkExistingPointsView(LoginRequiredMixin, View):
|
|||||||
* Обновить модуляцию (если "-")
|
* Обновить модуляцию (если "-")
|
||||||
* Обновить символьную скорость (если -1.0 или None)
|
* Обновить символьную скорость (если -1.0 или None)
|
||||||
* Обновить стандарт (если "-")
|
* Обновить стандарт (если "-")
|
||||||
|
* Обновить частоту (если 0 или None)
|
||||||
|
* Обновить полосу частот (если 0 или None)
|
||||||
|
* Подобрать подходящий транспондер
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
@@ -214,7 +217,7 @@ class LinkExistingPointsView(LoginRequiredMixin, View):
|
|||||||
# Получаем все ObjItem для данного спутника
|
# Получаем все ObjItem для данного спутника
|
||||||
objitems = ObjItem.objects.filter(
|
objitems = ObjItem.objects.filter(
|
||||||
parameter_obj__id_satellite=satellite
|
parameter_obj__id_satellite=satellite
|
||||||
).select_related('parameter_obj', 'parameter_obj__modulation', 'parameter_obj__standard')
|
).select_related('parameter_obj', 'parameter_obj__modulation', 'parameter_obj__standard', 'parameter_obj__polarization')
|
||||||
|
|
||||||
updated_count = 0
|
updated_count = 0
|
||||||
skipped_count = 0
|
skipped_count = 0
|
||||||
@@ -236,7 +239,14 @@ class LinkExistingPointsView(LoginRequiredMixin, View):
|
|||||||
parameter.bod_velocity is None or
|
parameter.bod_velocity is None or
|
||||||
parameter.bod_velocity == -1.0 or
|
parameter.bod_velocity == -1.0 or
|
||||||
parameter.bod_velocity == 0 or
|
parameter.bod_velocity == 0 or
|
||||||
(parameter.standard and parameter.standard.name == "-")
|
(parameter.standard and parameter.standard.name == "-") or
|
||||||
|
parameter.frequency is None or
|
||||||
|
parameter.frequency == 0 or
|
||||||
|
parameter.frequency == -1.0 or
|
||||||
|
parameter.freq_range is None or
|
||||||
|
parameter.freq_range == 0 or
|
||||||
|
parameter.freq_range == -1.0 or
|
||||||
|
objitem.transponder is None
|
||||||
)
|
)
|
||||||
|
|
||||||
if not needs_update:
|
if not needs_update:
|
||||||
@@ -247,7 +257,7 @@ class LinkExistingPointsView(LoginRequiredMixin, View):
|
|||||||
tech_analyze = TechAnalyze.objects.filter(
|
tech_analyze = TechAnalyze.objects.filter(
|
||||||
name=source_name,
|
name=source_name,
|
||||||
satellite=satellite
|
satellite=satellite
|
||||||
).select_related('modulation', 'standard').first()
|
).select_related('modulation', 'standard', 'polarization').first()
|
||||||
|
|
||||||
if not tech_analyze:
|
if not tech_analyze:
|
||||||
skipped_count += 1
|
skipped_count += 1
|
||||||
@@ -272,8 +282,55 @@ class LinkExistingPointsView(LoginRequiredMixin, View):
|
|||||||
parameter.standard = tech_analyze.standard
|
parameter.standard = tech_analyze.standard
|
||||||
updated = True
|
updated = True
|
||||||
|
|
||||||
|
# Обновляем частоту
|
||||||
|
if (parameter.frequency is None or parameter.frequency == 0 or parameter.frequency == -1.0) and \
|
||||||
|
tech_analyze.frequency and tech_analyze.frequency > 0:
|
||||||
|
parameter.frequency = tech_analyze.frequency
|
||||||
|
updated = True
|
||||||
|
|
||||||
|
# Обновляем полосу частот
|
||||||
|
if (parameter.freq_range is None or parameter.freq_range == 0 or parameter.freq_range == -1.0) and \
|
||||||
|
tech_analyze.freq_range and tech_analyze.freq_range > 0:
|
||||||
|
parameter.freq_range = tech_analyze.freq_range
|
||||||
|
updated = True
|
||||||
|
|
||||||
|
# Обновляем поляризацию если нужно
|
||||||
|
if parameter.polarization and parameter.polarization.name == "-" and tech_analyze.polarization:
|
||||||
|
parameter.polarization = tech_analyze.polarization
|
||||||
|
updated = True
|
||||||
|
|
||||||
|
# Сохраняем parameter перед поиском транспондера (чтобы использовать обновленные данные)
|
||||||
if updated:
|
if updated:
|
||||||
parameter.save()
|
parameter.save()
|
||||||
|
|
||||||
|
# Подбираем транспондер если его нет (используем функцию из utils)
|
||||||
|
if objitem.transponder is None and parameter.frequency and parameter.frequency > 0:
|
||||||
|
transponder = find_matching_transponder(
|
||||||
|
satellite,
|
||||||
|
parameter.frequency,
|
||||||
|
parameter.polarization
|
||||||
|
)
|
||||||
|
if transponder:
|
||||||
|
objitem.transponder = transponder
|
||||||
|
updated = True
|
||||||
|
|
||||||
|
# Подбираем источник LyngSat если его нет (используем функцию из utils)
|
||||||
|
if objitem.lyngsat_source is None and parameter.frequency and parameter.frequency > 0:
|
||||||
|
lyngsat_source = find_matching_lyngsat(
|
||||||
|
satellite,
|
||||||
|
parameter.frequency,
|
||||||
|
parameter.polarization,
|
||||||
|
tolerance_mhz=0.1
|
||||||
|
)
|
||||||
|
if lyngsat_source:
|
||||||
|
objitem.lyngsat_source = lyngsat_source
|
||||||
|
updated = True
|
||||||
|
|
||||||
|
# Сохраняем objitem если были изменения транспондера или lyngsat
|
||||||
|
if objitem.transponder or objitem.lyngsat_source:
|
||||||
|
objitem.save()
|
||||||
|
|
||||||
|
if updated:
|
||||||
updated_count += 1
|
updated_count += 1
|
||||||
else:
|
else:
|
||||||
skipped_count += 1
|
skipped_count += 1
|
||||||
@@ -305,7 +362,6 @@ class LinkExistingPointsView(LoginRequiredMixin, View):
|
|||||||
}, status=500)
|
}, status=500)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TechAnalyzeListView(LoginRequiredMixin, View):
|
class TechAnalyzeListView(LoginRequiredMixin, View):
|
||||||
"""
|
"""
|
||||||
Представление для отображения списка данных технического анализа.
|
Представление для отображения списка данных технического анализа.
|
||||||
|
|||||||
Reference in New Issue
Block a user