Example #1
0
 def lesson_jinja_env(self):
     env = jinja2.Environment(
         loader=jinja2.FileSystemLoader([str(self.path / 'lessons')]),
         autoescape=jinja2.select_autoescape(['html', 'xml']),
     )
     setup_jinja_env(env)
     return env
Example #2
0
from flask import Flask, render_template, url_for, send_from_directory
from flask import abort, redirect
from jinja2 import StrictUndefined
from jinja2.exceptions import TemplateNotFound
from werkzeug.local import LocalProxy
from pathlib import Path

from naucse import models
from naucse.urlconverters import register_url_converters
from naucse.templates import setup_jinja_env, vars_functions


app = Flask('naucse')
app.config['TEMPLATES_AUTO_RELOAD'] = True

setup_jinja_env(app.jinja_env)


_cached_model = None

@LocalProxy
def model():
    """Return the root of the naucse model

    In debug mode (elsa serve), a new model is returned for each requests,
    so changes are picked up.

    In non-debug mode (elsa freeze), a single model is used (and stored in
    _cached_model), so that metadata is only read once.
    """
    global _cached_model