from .base import (
    CERBERUS_RULE_IMAGE_EXTRA_FIELDS,
    CERBERUS_RULE_OPTIONAL_STRING,
    CERBERUS_RULE_REQUIRED_DATETIME_STRING,
    CERBERUS_RULE_REQUIRED_NONEMPTY_STRING,
    SourceSystemSchema,
    ImageSchema,
)


class MediaImageSchema(ImageSchema):
    """Schema for AEM images."""

    def __init__(self):
        super(MediaImageSchema, self).__init__()
        self['id'] = {'type': 'string', 'coerce': str, 'required': True, 'empty': False}
        self['abstract'] = CERBERUS_RULE_OPTIONAL_STRING
        self['publication_datetime'] = CERBERUS_RULE_REQUIRED_DATETIME_STRING
        self['last_modified_datetime'] = CERBERUS_RULE_REQUIRED_DATETIME_STRING
        self['content_type'] = CERBERUS_RULE_REQUIRED_NONEMPTY_STRING.copy()
        self['rights_system'] = {
            'type': 'dict',
            'required': False,
            'schema': SourceSystemSchema()
        }
        self['extra_fields'] = {
            'type': 'dict',
            'default': {},
            'schema': CERBERUS_RULE_IMAGE_EXTRA_FIELDS,
        }
        del self['order']
