from .base import (
    BaseSchema,
    CERBERUS_RULE_ARTICLE_SCHEMA,
    CERBERUS_RULE_OPTIONAL_STRING,
    CERBERUS_RULE_PHOTO_SCHEMA,
    CERBERUS_RULE_SCHEDULE_SCHEMA,
    CERBERUS_RULE_SERIES_SCHEMA,
    ImageSchema,
    VideoSchema
)


class FeedSchema(BaseSchema):
    # Cerberus schema to validate Items

    def __init__(self):
        super(FeedSchema, self).__init__()
        # ********* Media assets *********
        self['images'] = {
            'type': 'list',
            'required': False,
            'default': [],
            'schema': {
                'type': 'dict',
                'schema': ImageSchema()
            }
        }
        self['photo_galleries'] = {
            'type': 'list',
            'required': False,
            'default': [],
            'schema': {
                'type': 'list',
                'schema': {
                    'type': 'dict',
                    'schema': ImageSchema()
                }
            }
        }
        self['videos'] = {
            'type': 'list',
            'default': [],
            'schema': {
                'type': 'dict',
                'schema': VideoSchema()
            }
        }
        # ********* Content *********
        self['alt_bodies'] = {'type': 'dict', 'nullable': True, 'default': {}}
        self['body'] = CERBERUS_RULE_OPTIONAL_STRING
        # ********* Extra fields *********
        self['extra_fields'] = {
            'type': 'dict',
            'default': {},
            'schema': {
                'photo': CERBERUS_RULE_PHOTO_SCHEMA,
                'schedule': CERBERUS_RULE_SCHEDULE_SCHEMA,
                'series': CERBERUS_RULE_SERIES_SCHEMA,
                'article': CERBERUS_RULE_ARTICLE_SCHEMA
            }
        }
