def form_list_with_weather_info(self) -> None: main_logger.info( 'CLASS: Product1, METHOD: form_list_with_weather_info') for item in self.flights: weather_json = mapweather.weather_data(item['name']).form_json() aviasales_item = copy.deepcopy(item) self.weather.append(Mdict(weather_json) + Mdict(aviasales_item)) main_logger.debug(self.weather)
def perform_upload(self, filename_path: str, index_name: str, doc_type: str): main_logger.info('CLASS: PerformUpload, METHOD: perform_upload') if not self._client: self._client = Elasticsearch(el) if self._client.indices.exists(index=index_name): main_logger.debug('deleting index->%s' % index_name) self.perform_del_index(index_name) try: response = helpers.bulk(self._client, bulk_json_data(filename_path, index_name, doc_type)) setup_mapping(index=index_name, doc_type=doc_type, body=self.mapping) main_logger.info("\nbulk_json_data() RESPONSE:", response) except Exception as e: main_logger.error(e) return self
def form_list_with_cheap_ticket_flights(self, origin: str) -> None: main_logger.info( 'CLASS: Product1, METHOD: form_list_with_cheap_ticket_flights ') def _chunk(route_data): return maptickets.get_info_from_api_with_mapping( route_data['arrival_iata'], api='http://api.travelpayouts.com/v1/prices/cheap', mapping=maptickets.BasePricesCheap, url_params={ 'currency': 'RUB', 'origin': origin, 'destination': route_data['arrival_iata'], 'token': credentials.TRAVELPAYOUTS_TOKEN }) if self.routes: for route in self.routes: for item in _chunk(route): item.data.update(route) self.flights.append(item.data) main_logger.debug(self.routes)
def get_info_from_api_with_mapping(*args, **kwargs): main_logger.info('FUNCTION: get_info_from_api_with_mapping') _keys = {'mapping', 'api', 'url_params'} if not {'mapping', 'api', 'url_params'}.issubset(set(kwargs.keys())): raise KeyError('This function should have %s keys' % str(_keys)) _mapping_class = kwargs['mapping'] _api_url = kwargs['api'] _querystring = kwargs['url_params'] json = requests.get(_api_url, params=_querystring).json() try: result_object = _mapping_class(json, *args).object_list main_logger.debug(result_object) return result_object except KeyError: main_logger.error(u'Нет данных для данного маршрута') return
def form_db_list_with_routes( self, filename=config.SQL_FILE, conn_sring='postgres://{user}:{password}@vacation-planner-library.ciodtn8hce9y.ap-south-1.rds.amazonaws.com:5432/postgres' .format(user=credentials.DB_LOGIN, password=credentials.DB_PASSWORD), tst_res=None) -> None: main_logger.info('CLASS: Product1, METHOD: form_db_list_with_routes') #todo: make a generator from populate data function def populate_data(sql_res): for row in sql_res: self.routes.append(row) if tst_res: populate_data(tst_res) else: rs = run_sql_file(filename, conn_sring) populate_data(rs) main_logger.debug(self.routes)
def make_file(self, directory: str, filename: str): main_logger.info('CLASS: Product1, METHOD: make_file') with open( "{path}/{filename}".format(path=directory, filename=filename), "w+") as wf: json.dump(self.weather, wf)
def perform_del_index(self, index_name: str): main_logger.info('CLASS: PerformUpload, METHOD: perform_del_index') delete_index(base_url=self._base_url_elastic, old_index=index_name) return self