import jinja2

from my_site.app import views


class DependencyBubbler:
    def __init__(self, base_module):
        self.base_module = base_module

    def __getattribute__(self, name):
        base_module = object.__getattribute__(self, 'base_module')
        template = getattr(base_module, name, None)
        if template is None:
            raise AttributeError
        return template


def configure(app):
    my_template_loader = jinja2.ChoiceLoader([
        app.jinja_loader,
        jinja2.FileSystemLoader(['my_site/app/views'])
    ])
    app.jinja_loader = my_template_loader
    app.jinja_env.globals.update(
        views=DependencyBubbler(views),
    )