fix osm parsing
This commit is contained in:
SDE
2023-07-21 00:32:19 +03:00
parent 57c6badfa9
commit 2b42aa1173
2 changed files with 33 additions and 15 deletions

View File

@@ -12,8 +12,8 @@ from django.conf import settings
def MainPage(request):
from ReferenceDataApp.funcs import parse_data, search_cities_in_db, search_airports_in_db
# res = search_cities_in_db('ms')
# res = parse_data()
res = search_airports_in_db('ang')
res = parse_data()
page = StaticPage.objects.get(url='main')

View File

@@ -9,7 +9,7 @@ def search_cities_in_db(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)
res_data = City.objects.filter(Q_obj).values('id', 'name', 'country__name')
return res_data
return list(res_data)
def search_airports_in_db(search_str):
Q_obj = Q(iata_code__icontains=search_str) | \
@@ -18,7 +18,7 @@ def search_airports_in_db(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')
return res_data
return list(res_data)
def get_country_area_id_by_countryName(class_obj, name):
@@ -61,8 +61,8 @@ def create_airports_by_airportsList(airportsList, city=None):
airport_kwargs = {
'city': city,
'name_ru': airport_Dict['name:ru'],
'name_en': airport_Dict['name:en'],
# 'name_ru': airport_Dict['name:ru'],
# 'name_en': airport_Dict['name:en'],
'geo_lat': str(airport_Dict['@lat']),
'geo_lon': str(airport_Dict['@lon']),
@@ -73,6 +73,12 @@ def create_airports_by_airportsList(airportsList, city=None):
'icao_code': airport_Dict['icao'],
}
if airport_Dict['name:ru']:
airport_kwargs.update({'name_ru': airport_Dict['name:ru']})
if airport_Dict['name:en']:
airport_kwargs.update({'name_en': airport_Dict['name:en']})
if 'area_id' in airport_Dict:
airport_kwargs.update({'area_id': airport_Dict['area_id']})
@@ -86,6 +92,7 @@ def create_airports_by_airportsList(airportsList, city=None):
def parse_data():
# Airport.objects.all().delete()
# Country.objects.all().delete()
from BaseModels.OpenStreetMap.osm_api import osm_get_countries, osm_get_country_w_cities_n_airports
@@ -132,8 +139,8 @@ def parse_data():
if not country:
country_kwargs = {
'name_ru': country_Dict['name:ru'],
'name_en': country_Dict['name:en'],
# 'name_ru': country_Dict['name:ru'],
# 'name_en': country_Dict['name:en'],
'international_name': country_Dict['int_name'],
'official_name': country_Dict['official_name'],
@@ -146,6 +153,13 @@ def parse_data():
'geo_lat': str(country_Dict['@lat']),
'geo_lon': str(country_Dict['@lon']),
}
if country_Dict['name:ru']:
country_kwargs.update({'name_ru': country_Dict['name:ru']})
if country_Dict['name:en']:
country_kwargs.update({'name_en': country_Dict['name:en']})
if 'area_id' in country_Dict:
country_kwargs.update({'area_id': country_Dict['area_id']})
@@ -155,12 +169,14 @@ def parse_data():
for city_Dict in country_Dict['cities']:
city = None
kwargs = {}
if city_Dict['name:en']:
kwargs.update({'name_en': city_Dict['name:en']})
elif city_Dict['name:ru']:
kwargs.update({'name_ru': city_Dict['name:ru']})
try:
kwargs = {}
if country_Dict['name:en']:
kwargs.update({'name_en': country_Dict['name:en']})
elif country_Dict['name:ru']:
kwargs.update({'name_ru': country_Dict['name:ru']})
city = City.objects.get(**kwargs)
except Exception as e:
print(f'error = {str(e)}')
@@ -170,13 +186,15 @@ def parse_data():
city_kwargs = {
'country': country,
'name_ru': city_Dict['name:ru'],
'name_en': city_Dict['name:en'],
# 'name_ru': city_Dict['name:ru'],
# 'name_en': city_Dict['name:en'],
'geo_lat': str(city_Dict['@lat']),
'geo_lon': str(city_Dict['@lon']),
}
city_kwargs.update(kwargs)
if 'area_id' in city_Dict:
city_kwargs.update({'area_id': city_Dict['area_id']})