1.6.10 adds for search timezone for cities

This commit is contained in:
SDE
2024-08-09 21:53:25 +03:00
parent 4355586afc
commit 7620f97042

View File

@@ -8,22 +8,40 @@ from timezonefinder import TimezoneFinder
tzf = TimezoneFinder() tzf = TimezoneFinder()
def search_cities_in_db(search_str): def search_cities_in_db(search_str):
res_data = []
Q_obj = Q(name_en__icontains=search_str) | Q(name_ru__icontains=search_str) | \ Q_obj = Q(name_en__icontains=search_str) | Q(name_ru__icontains=search_str) | \
Q(country__name_en__icontains=search_str) | Q(country__name_ru__icontains=search_str) Q(country__name_en__icontains=search_str) | Q(country__name_ru__icontains=search_str)
res_data = City.objects.filter(Q_obj).values('id', 'name', 'country__name', 'timezone') objs = City.objects.filter(Q_obj)
if objs:
ids = objs.values_list('id', flat=True)
objs_wo_tz = objs.filter(timezone=None)
for item in objs_wo_tz:
item.get_n_save_timezone()
res_data = City.objects.filter(id__in=ids).values(
'id', 'name', 'country__name', 'timezone'
)
return list(res_data) return list(res_data)
def search_airports_in_db(search_str): def search_airports_in_db(search_str):
res_data = []
Q_obj = Q(iata_code__icontains=search_str) | \ Q_obj = Q(iata_code__icontains=search_str) | \
Q(name_en__icontains=search_str) | Q(name_ru__icontains=search_str) | \ Q(name_en__icontains=search_str) | Q(name_ru__icontains=search_str) | \
Q(city__name_en__icontains=search_str) | Q(city__name_ru__icontains=search_str) | \ Q(city__name_en__icontains=search_str) | Q(city__name_ru__icontains=search_str) | \
Q(city__country__name_en__icontains=search_str) | \ Q(city__country__name_en__icontains=search_str) | \
Q(city__country__name_ru__icontains=search_str) Q(city__country__name_ru__icontains=search_str)
res_data = Airport.objects.filter(Q_obj).values( objs = Airport.objects.filter(Q_obj)
if objs:
ids = objs.values_list('id', flat=True)
objs_wo_tz = objs.filter(city__timezone=None)
for item in objs_wo_tz:
item.city.get_n_save_timezone()
res_data = Airport.objects.filter(id__in=ids).values(
'id', 'name', 'iata_code', 'id', 'name', 'iata_code',
'city__name', 'city__country__name', 'city__timezone' 'city__name', 'city__country__name', 'city__timezone'
) )
return list(res_data) return list(res_data)