Поправил csv импорт
This commit is contained in:
@@ -765,31 +765,37 @@ def get_points_from_csv(file_content, current_user=None, is_automatic=False):
|
||||
'errors': список ошибок
|
||||
}
|
||||
"""
|
||||
# Читаем CSV без предопределенных имен колонок
|
||||
df = pd.read_csv(
|
||||
io.StringIO(file_content),
|
||||
sep=";",
|
||||
names=[
|
||||
"id",
|
||||
"obj",
|
||||
"lat",
|
||||
"lon",
|
||||
"h",
|
||||
"time",
|
||||
"sat",
|
||||
"norad_id",
|
||||
"freq",
|
||||
"f_range",
|
||||
"et",
|
||||
"qaul",
|
||||
"mir_1",
|
||||
"mir_2",
|
||||
"mir_3",
|
||||
"mir_4",
|
||||
"mir_5",
|
||||
"mir_6",
|
||||
"mir_7",
|
||||
],
|
||||
header=None
|
||||
)
|
||||
|
||||
# Присваиваем имена первым 12 колонкам
|
||||
base_columns = [
|
||||
"id",
|
||||
"obj",
|
||||
"lat",
|
||||
"lon",
|
||||
"h",
|
||||
"time",
|
||||
"sat",
|
||||
"norad_id",
|
||||
"freq",
|
||||
"f_range",
|
||||
"et",
|
||||
"qual",
|
||||
]
|
||||
|
||||
# Все колонки после "qual" (индекс 11) - это зеркала
|
||||
num_columns = len(df.columns)
|
||||
mirror_columns = [f"mir_{i+1}" for i in range(num_columns - len(base_columns))]
|
||||
|
||||
# Объединяем имена колонок
|
||||
df.columns = base_columns + mirror_columns
|
||||
|
||||
# Преобразуем типы данных
|
||||
df[["lat", "lon", "freq", "f_range"]] = (
|
||||
df[["lat", "lon", "freq", "f_range"]]
|
||||
.replace(",", ".", regex=True)
|
||||
@@ -873,7 +879,7 @@ def get_points_from_csv(file_content, current_user=None, is_automatic=False):
|
||||
sources_cache[(source_name, sat_name, source.id)] = source
|
||||
|
||||
# Создаем ObjItem (с Source или без, в зависимости от is_automatic)
|
||||
_create_objitem_from_csv_row(row, source, user_to_use, is_automatic)
|
||||
_create_objitem_from_csv_row(row, source, user_to_use, is_automatic, mirror_columns)
|
||||
added_count += 1
|
||||
|
||||
except Exception as e:
|
||||
@@ -996,7 +1002,7 @@ def _find_tech_analyze_data(name: str, satellite: Satellite):
|
||||
return None
|
||||
|
||||
|
||||
def _create_objitem_from_csv_row(row, source, user_to_use, is_automatic=False):
|
||||
def _create_objitem_from_csv_row(row, source, user_to_use, is_automatic=False, mirror_columns=None):
|
||||
"""
|
||||
Вспомогательная функция для создания ObjItem из строки CSV DataFrame.
|
||||
|
||||
@@ -1008,6 +1014,7 @@ def _create_objitem_from_csv_row(row, source, user_to_use, is_automatic=False):
|
||||
source: объект Source для связи (может быть None если is_automatic=True)
|
||||
user_to_use: пользователь для created_by
|
||||
is_automatic: если True, точка не связывается с Source
|
||||
mirror_columns: список имен колонок с зеркалами (optional)
|
||||
"""
|
||||
# Определяем поляризацию
|
||||
match row["obj"].split(" ")[-1]:
|
||||
@@ -1035,12 +1042,24 @@ def _create_objitem_from_csv_row(row, source, user_to_use, is_automatic=False):
|
||||
|
||||
# Обработка зеркал - теперь это спутники
|
||||
mirror_names = []
|
||||
if not pd.isna(row["mir_1"]) and row["mir_1"].strip() != "-":
|
||||
mirror_names.append(row["mir_1"])
|
||||
if not pd.isna(row["mir_2"]) and row["mir_2"].strip() != "-":
|
||||
mirror_names.append(row["mir_2"])
|
||||
if not pd.isna(row["mir_3"]) and row["mir_3"].strip() != "-":
|
||||
mirror_names.append(row["mir_3"])
|
||||
|
||||
# Если переданы имена колонок зеркал, используем их
|
||||
if mirror_columns:
|
||||
for mir_col in mirror_columns:
|
||||
if mir_col in row.index:
|
||||
mir_value = row[mir_col]
|
||||
if not pd.isna(mir_value) and str(mir_value).strip() != "-" and str(mir_value).strip() != "":
|
||||
mirror_names.append(str(mir_value).strip())
|
||||
else:
|
||||
# Fallback на старый способ (для обратной совместимости)
|
||||
for i in range(1, 100): # Проверяем до 100 колонок зеркал
|
||||
mir_col = f"mir_{i}"
|
||||
if mir_col in row.index:
|
||||
mir_value = row[mir_col]
|
||||
if not pd.isna(mir_value) and str(mir_value).strip() != "-" and str(mir_value).strip() != "":
|
||||
mirror_names.append(str(mir_value).strip())
|
||||
else:
|
||||
break
|
||||
|
||||
# Находим спутники-зеркала
|
||||
mirror_satellites = find_mirror_satellites(mirror_names)
|
||||
|
||||
Reference in New Issue
Block a user