Поправил привязку теханализа

This commit is contained in:
2025-12-16 12:45:59 +03:00
parent b6359d08cd
commit df5719fb8f

View File

@@ -189,13 +189,8 @@ class LinkExistingPointsView(LoginRequiredMixin, PermissionRequiredMixin, View):
2. Для каждого ObjItem: 2. Для каждого ObjItem:
- Извлечь имя источника - Извлечь имя источника
- Найти соответствующую запись TechAnalyze по имени и спутнику - Найти соответствующую запись TechAnalyze по имени и спутнику
- Если найдена и данные отсутствуют в Parameter: - Если найдена — перезаписать все доступные данные из теханализа в точку
* Обновить модуляцию (если "-") - Подобрать подходящий транспондер и LyngSat источник
* Обновить символьную скорость (если -1.0 или None)
* Обновить стандарт (если "-")
* Обновить частоту (если 0 или None)
* Обновить полосу частот (если 0 или None)
* Подобрать подходящий транспондер
""" """
permission_required = 'tech_analyze_edit' permission_required = 'tech_analyze_edit'
@@ -237,26 +232,6 @@ class LinkExistingPointsView(LoginRequiredMixin, PermissionRequiredMixin, View):
parameter = objitem.parameter_obj parameter = objitem.parameter_obj
source_name = objitem.name source_name = objitem.name
# Проверяем, нужно ли обновлять данные
needs_update = (
(parameter.modulation and parameter.modulation.name == "-") or
parameter.bod_velocity is None or
parameter.bod_velocity == -1.0 or
parameter.bod_velocity == 0 or
(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:
skipped_count += 1
continue
# Ищем данные в TechAnalyze по имени и спутнику # Ищем данные в TechAnalyze по имени и спутнику
tech_analyze = TechAnalyze.objects.filter( tech_analyze = TechAnalyze.objects.filter(
name=source_name, name=source_name,
@@ -267,48 +242,29 @@ class LinkExistingPointsView(LoginRequiredMixin, PermissionRequiredMixin, View):
skipped_count += 1 skipped_count += 1
continue continue
# Обновляем данные # Перезаписываем все доступные данные из теханализа
updated = False if tech_analyze.modulation:
# Обновляем модуляцию
if parameter.modulation and parameter.modulation.name == "-" and tech_analyze.modulation:
parameter.modulation = tech_analyze.modulation parameter.modulation = tech_analyze.modulation
updated = True
# Обновляем символьную скорость if tech_analyze.bod_velocity and tech_analyze.bod_velocity > 0:
if (parameter.bod_velocity is None or parameter.bod_velocity == -1.0 or parameter.bod_velocity == 0) and \
tech_analyze.bod_velocity and tech_analyze.bod_velocity > 0:
parameter.bod_velocity = tech_analyze.bod_velocity parameter.bod_velocity = tech_analyze.bod_velocity
updated = True
# Обновляем стандарт if tech_analyze.standard:
if parameter.standard and parameter.standard.name == "-" and tech_analyze.standard:
parameter.standard = tech_analyze.standard parameter.standard = tech_analyze.standard
updated = True
# Обновляем частоту if tech_analyze.frequency and tech_analyze.frequency > 0:
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 parameter.frequency = tech_analyze.frequency
updated = True
# Обновляем полосу частот if tech_analyze.freq_range and tech_analyze.freq_range > 0:
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 parameter.freq_range = tech_analyze.freq_range
updated = True
# Обновляем поляризацию если нужно if tech_analyze.polarization:
if parameter.polarization and parameter.polarization.name == "-" and tech_analyze.polarization:
parameter.polarization = tech_analyze.polarization parameter.polarization = tech_analyze.polarization
updated = True
# Сохраняем parameter перед поиском транспондера (чтобы использовать обновленные данные) parameter.save()
if updated:
parameter.save()
# Подбираем транспондер если его нет (используем функцию из utils) # Подбираем транспондер (используем функцию из utils)
if objitem.transponder is None and parameter.frequency and parameter.frequency > 0: if parameter.frequency and parameter.frequency > 0:
transponder = find_matching_transponder( transponder = find_matching_transponder(
satellite, satellite,
parameter.frequency, parameter.frequency,
@@ -316,10 +272,9 @@ class LinkExistingPointsView(LoginRequiredMixin, PermissionRequiredMixin, View):
) )
if transponder: if transponder:
objitem.transponder = transponder objitem.transponder = transponder
updated = True
# Подбираем источник LyngSat если его нет (используем функцию из utils) # Подбираем источник LyngSat (используем функцию из utils)
if objitem.lyngsat_source is None and parameter.frequency and parameter.frequency > 0: if parameter.frequency and parameter.frequency > 0:
lyngsat_source = find_matching_lyngsat( lyngsat_source = find_matching_lyngsat(
satellite, satellite,
parameter.frequency, parameter.frequency,
@@ -328,16 +283,9 @@ class LinkExistingPointsView(LoginRequiredMixin, PermissionRequiredMixin, View):
) )
if lyngsat_source: if lyngsat_source:
objitem.lyngsat_source = lyngsat_source objitem.lyngsat_source = lyngsat_source
updated = True
# Сохраняем objitem если были изменения транспондера или lyngsat objitem.save()
if objitem.transponder or objitem.lyngsat_source: updated_count += 1
objitem.save()
if updated:
updated_count += 1
else:
skipped_count += 1
except Exception as e: except Exception as e:
errors.append(f"ObjItem {objitem.id}: {str(e)}") errors.append(f"ObjItem {objitem.id}: {str(e)}")