import os
from django.conf import settings
from django.template.loaders.base import Loader as BaseLoader

from django.template import TemplateDoesNotExist
from django_blog_it.models import Theme


class Loader(BaseLoader):
    is_usable = True

    def load_template_source(self, template_name, template_dirs=None):

        themes = Theme.objects.filter(enabled=True)
        for theme in themes:
            filepath = os.path.join(os.path.dirname(__file__), 'themes', theme.name, 'templates', template_name)
            try:
                file = open(filepath)
                try:
                    return (file.read().decode(settings.FILE_CHARSET), filepath)
                finally:
                    file.close()
            except IOError:
                pass

        raise TemplateDoesNotExist("Could not find template '%s'." % template_name)