"""
Models for static_replace
"""

from config_models.models import ConfigurationModel
from django.db.models.fields import TextField


class AssetBaseUrlConfig(ConfigurationModel):
    """Configuration for the base URL used for static assets."""

    class Meta(object):
        app_label = 'static_replace'

    base_url = TextField(
        blank=True,
        help_text="The alternative hostname to serve static assets from.  Should be in the form of hostname[:port]."
    )

    @classmethod
    def get_base_url(cls):
        """Gets the base URL to use for serving static assets, if present"""
        return cls.current().base_url

    def __repr__(self):
        return '<AssetBaseUrlConfig(base_url={})>'.format(self.get_base_url())

    def __unicode__(self):
        return unicode(repr(self))


class AssetExcludedExtensionsConfig(ConfigurationModel):
    """Configuration for the the excluded file extensions when canonicalizing static asset paths."""

    class Meta(object):
        app_label = 'static_replace'

    excluded_extensions = TextField(
        default='html',
        help_text='The file extensions to exclude from canonicalization.  No leading period required. ' +
        'Values should be space separated i.e. "html svg css"'
    )

    @classmethod
    def get_excluded_extensions(cls):
        """Gets the excluded file extensions when canonicalizing static asset paths"""
        add_period = lambda x: '.' + x
        return map(add_period, cls.current().excluded_extensions.split())

    def __repr__(self):
        return '<AssetExcludedExtensionsConfig(extensions={})>'.format(self.get_excluded_extensions())

    def __unicode__(self):
        return unicode(repr(self))