Поправил привязку теханализа
This commit is contained in:
@@ -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)}")
|
||||||
|
|||||||
Reference in New Issue
Block a user