from .base import (
    CERBERUS_RULE_REQUIRED_DATETIME_STRING,
    CERBERUS_RULE_REQUIRED_NONEMPTY_STRING,
    CERBERUS_RULE_REQUIRED_UUID,
    Schema,
    AnimalFactsTopicSchema
)


class TaxonomySchema(Schema):
    def __init__(self):
        super(TaxonomySchema, self).__init__()
        # Cerberus schema to validate taxonomy topics
        self['uuid'] = CERBERUS_RULE_REQUIRED_UUID
        self['name'] = CERBERUS_RULE_REQUIRED_NONEMPTY_STRING
        self['topic_type'] = CERBERUS_RULE_REQUIRED_NONEMPTY_STRING
        self['children'] = {
            'type': 'list',
            'default': [],
            'schema': CERBERUS_RULE_REQUIRED_UUID
        }
        self['animal_facts'] = {
            'type': 'dict',
            'required': False,
            'schema': AnimalFactsTopicSchema()
        }
        self['creation_datetime'] = CERBERUS_RULE_REQUIRED_DATETIME_STRING
        self['updated_datetime'] = CERBERUS_RULE_REQUIRED_DATETIME_STRING
