from flask import url_for
from werkzeug.exceptions import NotFound

from .feed import FeedItem
from ..models.series import Series
from ..schemas.schedule import ScheduleSchema


class Schedule(FeedItem):
    schema = ScheduleSchema()
    default_fields = [
        "episode",
        "title",
        "language",
        "last_modified_datetime",
        "publication_datetime"
    ]

    def relationships(self, format='jsonapi'):
        data = {}
        series_id = 'sintec:{}:{}'.format(self.data['episode']['series_id'], self.data['language'])
        episode_data = {}
        try:
            series = Series.manager.get(series_id)
            for episode in series.data['episodes']:
                if str(episode['id']) == self.data['episode']['episode_id']:
                    episode_data = {
                        'data': {
                            'id': series.key,
                            'type': series.data['content_type'],
                            'meta': {
                                'episode': episode,
                                'title': series.get('title', ''),
                                'abstract': series.get('abstract', ''),
                                'image': series.get('image', {})
                            }
                        },
                        'links': {
                            'related': url_for('feeddetail',
                                               _external=True,
                                               pk=series.key,
                                               format=format)
                        }
                    }
                    break
        except NotFound:
            data = {'data': {'id': series_id}}
        data['series'] = episode_data
        return data
