From df5719fb8fbd4c50b0fdeebb5aca0068b95a2644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=BE=D1=88=D0=BA=D0=B8=D0=BD=20=D0=A1=D0=B5=D1=80?= =?UTF-8?q?=D0=B3=D0=B5=D0=B9?= Date: Tue, 16 Dec 2025 12:45:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D1=80=D0=B8=D0=B2=D1=8F=D0=B7=D0=BA=D1=83=20?= =?UTF-8?q?=D1=82=D0=B5=D1=85=D0=B0=D0=BD=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbapp/mainapp/views/tech_analyze.py | 84 ++++++----------------------- 1 file changed, 16 insertions(+), 68 deletions(-) diff --git a/dbapp/mainapp/views/tech_analyze.py b/dbapp/mainapp/views/tech_analyze.py index b234dca..db0c6d6 100644 --- a/dbapp/mainapp/views/tech_analyze.py +++ b/dbapp/mainapp/views/tech_analyze.py @@ -189,13 +189,8 @@ class LinkExistingPointsView(LoginRequiredMixin, PermissionRequiredMixin, View): 2. Для каждого ObjItem: - Извлечь имя источника - Найти соответствующую запись TechAnalyze по имени и спутнику - - Если найдена и данные отсутствуют в Parameter: - * Обновить модуляцию (если "-") - * Обновить символьную скорость (если -1.0 или None) - * Обновить стандарт (если "-") - * Обновить частоту (если 0 или None) - * Обновить полосу частот (если 0 или None) - * Подобрать подходящий транспондер + - Если найдена — перезаписать все доступные данные из теханализа в точку + - Подобрать подходящий транспондер и LyngSat источник """ permission_required = 'tech_analyze_edit' @@ -237,26 +232,6 @@ class LinkExistingPointsView(LoginRequiredMixin, PermissionRequiredMixin, View): parameter = objitem.parameter_obj 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 по имени и спутнику tech_analyze = TechAnalyze.objects.filter( name=source_name, @@ -267,48 +242,29 @@ class LinkExistingPointsView(LoginRequiredMixin, PermissionRequiredMixin, View): skipped_count += 1 continue - # Обновляем данные - updated = False - - # Обновляем модуляцию - if parameter.modulation and parameter.modulation.name == "-" and tech_analyze.modulation: + # Перезаписываем все доступные данные из теханализа + if tech_analyze.modulation: parameter.modulation = tech_analyze.modulation - updated = True - # Обновляем символьную скорость - 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: + if tech_analyze.bod_velocity and tech_analyze.bod_velocity > 0: parameter.bod_velocity = tech_analyze.bod_velocity - updated = True - # Обновляем стандарт - if parameter.standard and parameter.standard.name == "-" and tech_analyze.standard: + if tech_analyze.standard: parameter.standard = tech_analyze.standard - 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: + if 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: + if 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: + if tech_analyze.polarization: parameter.polarization = tech_analyze.polarization - updated = True - # Сохраняем parameter перед поиском транспондера (чтобы использовать обновленные данные) - if updated: - parameter.save() + parameter.save() - # Подбираем транспондер если его нет (используем функцию из utils) - if objitem.transponder is None and parameter.frequency and parameter.frequency > 0: + # Подбираем транспондер (используем функцию из utils) + if parameter.frequency and parameter.frequency > 0: transponder = find_matching_transponder( satellite, parameter.frequency, @@ -316,10 +272,9 @@ class LinkExistingPointsView(LoginRequiredMixin, PermissionRequiredMixin, View): ) if transponder: objitem.transponder = transponder - updated = True - # Подбираем источник LyngSat если его нет (используем функцию из utils) - if objitem.lyngsat_source is None and parameter.frequency and parameter.frequency > 0: + # Подбираем источник LyngSat (используем функцию из utils) + if parameter.frequency and parameter.frequency > 0: lyngsat_source = find_matching_lyngsat( satellite, parameter.frequency, @@ -328,16 +283,9 @@ class LinkExistingPointsView(LoginRequiredMixin, PermissionRequiredMixin, View): ) 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 - else: - skipped_count += 1 + objitem.save() + updated_count += 1 except Exception as e: errors.append(f"ObjItem {objitem.id}: {str(e)}")