def test_time_indexing(self):
     update_index(Article.objects.all(),
                  'Article',
                  start_date=datetime.strftime(datetime.now(),
                                               '%Y-%m-%d %H:%M'))
     update_index(NoUpdatedField.objects.all(),
                  'NoUpdatedField',
                  end_date=datetime.strftime(datetime.now(), '%Y-%m-%d'))
    def run(self, model, instance_pks, **kwargs):
        settings = Bungiesearch.BUNGIE.get('SIGNALS', {})
        buffer_size = settings.get('BUFFER_SIZE', 100)

        try:
            update_index(instance_pks, model.__name__, action='delete', bulk_size=buffer_size)
        except TransportError as e:
            if e.status_code == 404:
                return
            raise
    def test_time_indexing(self):
        try:
            update_index(
                Article.objects.all(), "Article", start_date=datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M")
            )
        except Exception as e:
            self.fail("update_index with a start date failed for model Article: {}.".format(e))

        self.assertRaises(
            ValueError,
            update_index,
            **{
                "model_items": NoUpdatedField.objects.all(),
                "model_name": "NoUpdatedField",
                "end_date": datetime.strftime(datetime.now(), "%Y-%m-%d"),
            }
        )
    def run(self, model, instance_pks, **kwargs):
        settings = Bungiesearch.BUNGIE.get("SIGNALS", {})
        buffer_size = settings.get("BUFFER_SIZE", 100)
        refresh = kwargs.get("refresh", self.refresh)

        try:
            update_index(instance_pks, model.__name__, action="delete", bulk_size=buffer_size, refresh=refresh)

        except BulkIndexError as e:
            for error in e.errors:
                if error["delete"] and error["delete"]["status"] == 404:
                    continue
                raise

        except TransportError as e:
            if e.status_code == 404:
                return
            raise
    def test_bulk_delete(self):
        '''
        This tests that using the update_index function with 'delete' as the action performs a bulk delete operation on the data.
        '''
        bulk_art1 = {'title': 'Title four',
                     'description': 'Bulk delete first',
                     'link': 'http://example.com/bd1',
                     'published': pytz.UTC.localize(datetime(year=2015, month=7, day=13)),
                     'updated': pytz.UTC.localize(datetime(year=2015, month=7, day=20)),
                     'tweet_count': 20,
                     'source_hash': 159159159159,
                     'missing_data': '',
                     'positive_feedback': 50,
                     'negative_feedback': 5}
        bulk_art2 = {'title': 'Title five',
                     'description': 'Bulk delete second',
                     'link': 'http://example.com/bd2',
                     'published': pytz.UTC.localize(datetime(year=2015, month=7, day=13)),
                     'updated': pytz.UTC.localize(datetime(year=2015, month=7, day=20)),
                     'tweet_count': 20,
                     'source_hash': 159159159159,
                     'missing_data': '',
                     'positive_feedback': 50,
                     'negative_feedback': 5}

        bulk_obj1 = Article.objects.create(**bulk_art1)
        bulk_obj2 = Article.objects.create(**bulk_art2)

        find_five = Article.objects.search.query('match', title='five')
        self.assertEqual(len(find_five), 2, 'Searching for "five" in title did not return exactly two results (got {})'.format(find_five))

        model_items = [bulk_obj1.pk, bulk_obj2.pk]
        model_name = Article.__name__
        update_index(model_items, model_name, action='delete', bulk_size=2, num_docs=-1, start_date=None, end_date=None, refresh=True)

        find_four = Article.objects.search.query('match', title='four')
        self.assertEqual(len(find_four), 0, 'Searching for "four" in title did not return exactly zero results (got {})'.format(find_four))
        find_five = Article.objects.search.query('match', title='five')
        self.assertEqual(len(find_five), 0, 'Searching for "five" in title did not return exactly zero results (got {})'.format(find_five))
Beispiel #6
0
    def test_bulk_delete(self):
        '''
        This tests that using the update_index function with 'delete' as the action performs a bulk delete operation on the data.
        '''
        bulk_art1 = {'title': 'Title four',
                     'description': 'Bulk delete first',
                     'link': 'http://example.com/bd1',
                     'published': pytz.UTC.localize(datetime(year=2015, month=7, day=13)),
                     'updated': pytz.UTC.localize(datetime(year=2015, month=7, day=20)),
                     'tweet_count': 20,
                     'source_hash': 159159159159,
                     'missing_data': '',
                     'positive_feedback': 50,
                     'negative_feedback': 5}
        bulk_art2 = {'title': 'Title five',
                     'description': 'Bulk delete second',
                     'link': 'http://example.com/bd2',
                     'published': pytz.UTC.localize(datetime(year=2015, month=7, day=13)),
                     'updated': pytz.UTC.localize(datetime(year=2015, month=7, day=20)),
                     'tweet_count': 20,
                     'source_hash': 159159159159,
                     'missing_data': '',
                     'positive_feedback': 50,
                     'negative_feedback': 5}

        bulk_obj1 = Article.objects.create(**bulk_art1)
        bulk_obj2 = Article.objects.create(**bulk_art2)

        find_five = Article.objects.search.query('match', title='five')
        self.assertEqual(len(find_five), 2, 'Searching for "five" in title did not return exactly two results (got {})'.format(find_five))

        model_items = [bulk_obj1.pk, bulk_obj2.pk]
        model_name = Article.__name__
        update_index(model_items, model_name, action='delete', bulk_size=2, num_docs=-1, start_date=None, end_date=None, refresh=True)

        find_four = Article.objects.search.query('match', title='four')
        self.assertEqual(len(find_four), 0, 'Searching for "four" in title did not return exactly zero results (got {})'.format(find_four))
        find_five = Article.objects.search.query('match', title='five')
        self.assertEqual(len(find_five), 0, 'Searching for "five" in title did not return exactly zero results (got {})'.format(find_five))
    def run(self, action, instance, **kwargs):
        '''
        Trigger the actual index handler depending on the
        given action ('save', 'delete').
        '''
        model_class = type(instance)
        model_name = model_class.__name__

        if action not in ('save', 'delete'):
            raise ValueError("Unrecognized action: %s" % action)

        if action == 'save':
            indexing_query = get_model_indexing_query(model_class)
            should_index = indexing_query.filter(pk=instance.pk).exists()

            if should_index:
                update_index([instance], model_name)
            else:
                delete_index_item(instance, model_name)

        elif action == 'delete':
            delete_index_item(instance, model_name)
    def run(self, action, instance, **kwargs):
        '''
        Trigger the actual index handler depending on the
        given action ('save', 'delete').
        '''
        model_class = type(instance)
        model_name = model_class.__name__

        if action not in ('save', 'delete'):
            raise ValueError("Unrecognized action: %s" % action)

        if action == 'save':
            indexing_query = get_model_indexing_query(model_class)
            should_index = indexing_query.filter(pk=instance.pk).exists()

            if should_index:
                update_index([instance], model_name)
            else:
                delete_index_item(instance, model_name)

        elif action == 'delete':
            delete_index_item(instance, model_name)
    def run(self, action, instance, **kwargs):
        """
        Trigger the actual index handler depending on the
        given action ('save', 'delete').
        """
        model_class = type(instance)
        model_name = model_class.__name__

        if action not in ("save", "delete"):
            raise ValueError("Unrecognized action: %s" % action)

        refresh = kwargs.get("refresh", self.refresh)

        if action == "save":
            indexing_query = get_model_indexing_query(model_class)
            should_index = indexing_query.filter(pk=instance.pk).exists()

            if should_index:
                update_index([instance], model_name, refresh=refresh)
            else:
                delete_index_item(instance, model_name)

        elif action == "delete":
            delete_index_item(instance, model_name, refresh=refresh)
 def test_time_indexing(self):
     update_index(Article.objects.all(), 'Article', start_date=datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M'))
     update_index(NoUpdatedField.objects.all(), 'NoUpdatedField', end_date=datetime.strftime(datetime.now(), '%Y-%m-%d'))
 def run(self, model, instances, **kwargs):
     settings = Bungiesearch.BUNGIE.get('SIGNALS', {})
     buffer_size = settings.get('BUFFER_SIZE', 100)
     update_index(instances, model.__name__, action='delete', bulk_size=buffer_size)
    def test_bulk_delete(self):
        """
        This tests that using the update_index function with 'delete' as the action performs a bulk delete operation on the data.
        """
        bulk_art1 = {
            "title": "Title four",
            "description": "Bulk delete first",
            "link": "http://example.com/bd1",
            "published": pytz.UTC.localize(datetime(year=2015, month=7, day=13)),
            "updated": pytz.UTC.localize(datetime(year=2015, month=7, day=20)),
            "tweet_count": 20,
            "source_hash": 159159159159,
            "missing_data": "",
            "positive_feedback": 50,
            "negative_feedback": 5,
        }
        bulk_art2 = {
            "title": "Title five",
            "description": "Bulk delete second",
            "link": "http://example.com/bd2",
            "published": pytz.UTC.localize(datetime(year=2015, month=7, day=13)),
            "updated": pytz.UTC.localize(datetime(year=2015, month=7, day=20)),
            "tweet_count": 20,
            "source_hash": 159159159159,
            "missing_data": "",
            "positive_feedback": 50,
            "negative_feedback": 5,
        }

        bulk_obj1 = Article.objects.create(**bulk_art1)
        bulk_obj2 = Article.objects.create(**bulk_art2)

        find_five = Article.objects.search.query("match", title="five")
        self.assertEqual(
            len(find_five),
            2,
            'Searching for "five" in title did not return exactly two results (got {})'.format(find_five),
        )

        model_items = [bulk_obj1, bulk_obj2]
        model_name = Article.__name__
        update_index(
            model_items,
            model_name,
            action="delete",
            bulk_size=2,
            num_docs=-1,
            start_date=None,
            end_date=None,
            refresh=True,
        )

        find_four = Article.objects.search.query("match", title="four")
        self.assertEqual(
            len(find_four),
            0,
            'Searching for "four" in title did not return exactly zero results (got {})'.format(find_four),
        )
        find_five = Article.objects.search.query("match", title="five")
        self.assertEqual(
            len(find_five),
            0,
            'Searching for "five" in title did not return exactly zero results (got {})'.format(find_five),
        )