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)
Beispiel #2
0
    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)
Beispiel #7
0
 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