diff --git a/ReferenceDataApp/funcs.py b/ReferenceDataApp/funcs.py index 9d8c85c..8543ad9 100644 --- a/ReferenceDataApp/funcs.py +++ b/ReferenceDataApp/funcs.py @@ -8,22 +8,40 @@ from timezonefinder import TimezoneFinder tzf = TimezoneFinder() def search_cities_in_db(search_str): - + res_data = [] 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) - 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) def search_airports_in_db(search_str): + res_data = [] Q_obj = Q(iata_code__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__country__name_en__icontains=search_str) | \ Q(city__country__name_ru__icontains=search_str) - res_data = Airport.objects.filter(Q_obj).values( - 'id', 'name', 'iata_code', - 'city__name', 'city__country__name', 'city__timezone' - ) + 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', + 'city__name', 'city__country__name', 'city__timezone' + ) + return list(res_data)