from elasticsearch.helpers import scan

from distribution import app
from distribution.models.feed import FeedItem
from distribution.models.series import Series


def update_series():

    model = Series

    query = {
        'filter': {
            'type': {
                'value': 'series'
            }
        }
    }

    actions = []
    generator = scan(FeedItem.manager.backend.client,
                     query,
                     index=app.config.get('ELASTICSEARCH_FEED_INDEX_NAME', 'distribution_feed'),
                     doc_type=model.manager.doc_type,
                     raise_on_error=False)

    for key in generator:
        if key['_source'].get('image'):
            key['_source']['image']['uri'] = key['_source']['image']['uri'].replace(
                'https://s3.amazonaws.com/distribution-show-images',
                'https://distribution-assets.nationalgeographic.com'
            )
            actions.append({'_op_type': 'index',
                            '_index': app.config.get('ELASTICSEARCH_FEED_INDEX_NAME',
                                                     'distribution_feed'),
                            '_type': model.manager.doc_type,
                            '_id': key['_id'],
                            '_source': key['_source']})

    if actions:
        print '-- Executing {} actions for {} --'.format(len(actions), model.manager.doc_type)
        model.manager.backend.bulk(actions)


if __name__ == "__main__":
    update_series()
