diff --git a/GeneralApp/views.py b/GeneralApp/views.py index 2b1a3f8..6b847a5 100644 --- a/GeneralApp/views.py +++ b/GeneralApp/views.py @@ -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') diff --git a/ReferenceDataApp/funcs.py b/ReferenceDataApp/funcs.py index fce2628..bf9ef70 100644 --- a/ReferenceDataApp/funcs.py +++ b/ReferenceDataApp/funcs.py @@ -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']})