новый структура моделей

This commit is contained in:
2025-10-30 12:27:25 +03:00
parent 94df5171db
commit 20a13414de
6 changed files with 245 additions and 87 deletions

View File

@@ -21,7 +21,7 @@ import io
from django.db.models import F, Count, Exists, OuterRef, Min, Max
from geopy.geocoders import Nominatim
import reverse_geocoder as rg
import time
from time import sleep
def get_all_constants():
sats = [sat.name for sat in Satellite.objects.all()]
@@ -88,6 +88,7 @@ def fill_data_from_df(df: pd.DataFrame, sat: Satellite):
date = stroka[1]['Дата'].date()
time_ = stroka[1]['Время']
if isinstance(time_, str):
time_ = time_.strip()
time_ = time(0,0,0)
timestamp = datetime.combine(date, time_)
current_mirrors = []
@@ -111,7 +112,7 @@ def fill_data_from_df(df: pd.DataFrame, sat: Satellite):
comment = stroka[1]['Комментарий']
source = stroka[1]['Объект наблюдения']
vch_load_obj, vch_created = Parameter.objects.get_or_create(
vch_load_obj, _ = Parameter.objects.get_or_create(
id_satellite=sat,
polarization=polarization_obj,
frequency=freq,
@@ -137,17 +138,41 @@ def fill_data_from_df(df: pd.DataFrame, sat: Satellite):
geo.save()
geo.mirrors.set(Mirror.objects.filter(name__in=current_mirrors))
obj_item, _ = ObjItem.objects.get_or_create(
id_geo=geo,
id_vch_load=vch_load_obj,
defaults={
'name': source,
'id_user_add': CustomUser.objects.get(id=1),
# 'id_satellite': sat
}
existing_obj_items = ObjItem.objects.filter(
parameters_obj=vch_load_obj,
geo_obj=geo
)
if not existing_obj_items.exists():
# Такой объект уже существует, используем его
# obj_item = existing_obj_items.first()
obj_item = ObjItem.objects.create(
name=source,
id_user_add=CustomUser.objects.get(id=1)
)
# Устанавливаем связь с параметром
obj_item.parameters_obj.set([vch_load_obj])
# Устанавливаем связь с geo
geo.objitem = obj_item
geo.save()
# else:
# Создаем новый ObjItem
# obj_item, _ = ObjItem.objects.get_or_create(
# defaults={
# 'name': source,
# 'id_user_add': CustomUser.objects.get(id=1),
# # 'id_satellite': sat
# }
# )
# obj_item.save()
# obj_item.parameters_obj.set([vch_load_obj])
# if geo:
# obj_item.geo_obj = geo
# # или в зависимости от вашей модели Geo, вы можете установить обратную связь там:
# # geo.objitem = obj_item
# geo.save()
obj_item.save()
def add_satellite_list():
@@ -389,7 +414,7 @@ def kub_report(data_in: io.StringIO) -> pd.DataFrame:
# loc_name = location.get('city', '') or location.get('town', '') or location.get('province', '') or location.get('country', '')
# except AttributeError:
# loc_name = ''
# time.sleep(1)
# sleep(1)
loc_name = ''
if transponder: #and not (len(transponder) > 1):
transfer = transponder.transfer