Exemplo n.º 1
0
    def filter(self, column_name_list=None, keep_db=False):
        logger.info('Filtering... \nInput file: %s', self.input_file_path)

        self.__append_query(self.any_query)
        self.__append_query(filter_utils.get_list_string_element_query(FeedColumn.ITEM_ID, self.item_ids))
        self.__append_query(filter_utils.get_list_string_element_query(FeedColumn.CATEGORY_ID, self.leaf_category_ids))
        self.__append_query(filter_utils.get_list_string_element_query(FeedColumn.SELLER_USERNAME, self.seller_names))
        self.__append_query(filter_utils.get_list_string_element_query(FeedColumn.GTIN, self.gtins))
        self.__append_query(filter_utils.get_list_string_element_query(FeedColumn.EPID, self.epids))
        self.__append_query(filter_utils.get_inclusive_greater_query(FeedColumn.PRICE_VALUE, self.price_lower_limit))
        self.__append_query(filter_utils.get_inclusive_less_query(FeedColumn.PRICE_VALUE, self.price_upper_limit))
        self.__append_query(filter_utils.get_list_string_element_query(FeedColumn.INFERRED_EPID, self.inferred_epids))
        self.__append_query(filter_utils.get_list_string_element_query(FeedColumn.ITEM_LOCATION_COUNTRIES,
                                                                       self.item_location_countries))
        query_str = None
        if self.__queries:
            query_str = ' AND '.join(self.__queries)
        if not self.input_file_path or not isfile(self.input_file_path):
            return Response(const.FAILURE_CODE,
                            'Input file is a directory or does not exist. Cannot filter. Aborting...',
                            self.filtered_file_path, self.queries)
        if not query_str:
            return Response(const.FAILURE_CODE, 'No filters have been specified. Cannot filter. Aborting...',
                            self.filtered_file_path, self.queries)
        # create the data frame
        filtered_data = self.__read_chunks_gzip_file(query_str, column_name_list, keep_db)
        if not filtered_data.empty:
            self.__save_filtered_data_frame(filtered_data)
        else:
            logger.error('No filtered feed file created')
        return Response(const.SUCCESS_CODE, const.SUCCESS_STR, self.filtered_file_path, self.queries)
Exemplo n.º 2
0
 def test_get_inclusive_less_query(self):
     query_str = filter_utils.get_inclusive_less_query(
         self.test_column_1, 10)
     expected_query = '%s <= 10' % self.test_column_1
     self.assertEqual(expected_query, query_str)
Exemplo n.º 3
0
 def test_get_inclusive_less_query_empty(self):
     query_str = filter_utils.get_inclusive_less_query(
         self.test_column_1, '')
     self.assertEqual('', query_str, 'query is not an empty string')