Привязка LyngSat сразу в функция импорта
This commit is contained in:
@@ -69,6 +69,45 @@ def find_matching_transponder(satellite, frequency, polarization):
|
|||||||
# Возвращаем самый свежий транспондер
|
# Возвращаем самый свежий транспондер
|
||||||
return transponders.first()
|
return transponders.first()
|
||||||
|
|
||||||
|
|
||||||
|
def find_matching_lyngsat(satellite, frequency, polarization, tolerance_mhz=0.1):
|
||||||
|
"""
|
||||||
|
Находит подходящий источник LyngSat для заданных параметров.
|
||||||
|
|
||||||
|
Алгоритм:
|
||||||
|
1. Фильтрует источники LyngSat по спутнику и поляризации
|
||||||
|
2. Проверяет, совпадает ли частота с заданной точностью (по умолчанию ±0.1 МГц)
|
||||||
|
3. Возвращает самый свежий источник (по last_update)
|
||||||
|
|
||||||
|
Args:
|
||||||
|
satellite: объект Satellite
|
||||||
|
frequency: частота в МГц
|
||||||
|
polarization: объект Polarization
|
||||||
|
tolerance_mhz: допуск по частоте в МГц (по умолчанию 0.1)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
LyngSat или None: найденный источник LyngSat или None
|
||||||
|
"""
|
||||||
|
# Импортируем здесь, чтобы избежать циклических импортов
|
||||||
|
from lyngsatapp.models import LyngSat
|
||||||
|
|
||||||
|
if not satellite or not polarization or frequency == -1.0:
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Фильтруем источники LyngSat по спутнику и поляризации
|
||||||
|
lyngsat_sources = LyngSat.objects.filter(
|
||||||
|
id_satellite=satellite,
|
||||||
|
polarization=polarization,
|
||||||
|
frequency__isnull=False
|
||||||
|
).filter(
|
||||||
|
# Проверяем, входит ли частота в допуск
|
||||||
|
frequency__gte=frequency - tolerance_mhz,
|
||||||
|
frequency__lte=frequency + tolerance_mhz
|
||||||
|
).order_by('-last_update') # Сортируем по дате обновления (самые свежие первыми)
|
||||||
|
|
||||||
|
# Возвращаем самый свежий источник
|
||||||
|
return lyngsat_sources.first()
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# Константы
|
# Константы
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
@@ -433,11 +472,15 @@ def _create_objitem_from_row(row, sat, source, user_to_use, consts):
|
|||||||
# Находим подходящий транспондер
|
# Находим подходящий транспондер
|
||||||
transponder = find_matching_transponder(sat, freq, polarization_obj)
|
transponder = find_matching_transponder(sat, freq, polarization_obj)
|
||||||
|
|
||||||
# Создаем новый ObjItem и связываем с Source и Transponder
|
# Находим подходящий источник LyngSat (точность 0.1 МГц)
|
||||||
|
lyngsat_source = find_matching_lyngsat(sat, freq, polarization_obj, tolerance_mhz=0.1)
|
||||||
|
|
||||||
|
# Создаем новый ObjItem и связываем с Source, Transponder и LyngSat
|
||||||
obj_item = ObjItem.objects.create(
|
obj_item = ObjItem.objects.create(
|
||||||
name=source_name,
|
name=source_name,
|
||||||
source=source,
|
source=source,
|
||||||
transponder=transponder,
|
transponder=transponder,
|
||||||
|
lyngsat_source=lyngsat_source,
|
||||||
created_by=user_to_use
|
created_by=user_to_use
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -767,11 +810,15 @@ def _create_objitem_from_csv_row(row, source, user_to_use):
|
|||||||
# Находим подходящий транспондер
|
# Находим подходящий транспондер
|
||||||
transponder = find_matching_transponder(sat_obj, row["freq"], pol_obj)
|
transponder = find_matching_transponder(sat_obj, row["freq"], pol_obj)
|
||||||
|
|
||||||
# Создаем новый ObjItem и связываем с Source и Transponder
|
# Находим подходящий источник LyngSat (точность 0.1 МГц)
|
||||||
|
lyngsat_source = find_matching_lyngsat(sat_obj, row["freq"], pol_obj, tolerance_mhz=0.1)
|
||||||
|
|
||||||
|
# Создаем новый ObjItem и связываем с Source, Transponder и LyngSat
|
||||||
obj_item = ObjItem.objects.create(
|
obj_item = ObjItem.objects.create(
|
||||||
name=row["obj"],
|
name=row["obj"],
|
||||||
source=source,
|
source=source,
|
||||||
transponder=transponder,
|
transponder=transponder,
|
||||||
|
lyngsat_source=lyngsat_source,
|
||||||
created_by=user_to_use
|
created_by=user_to_use
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user