def __init__(self, project, load_plugins=True): self.project = project self.root_path = os.path.abspath(project.tree) self.jinja_env = CustomJinjaEnvironment( autoescape=self.select_jinja_autoescape, extensions=["jinja2.ext.autoescape", "jinja2.ext.with_"], loader=jinja2.FileSystemLoader(os.path.join(self.root_path, "templates")), ) from lektor.db import F self.jinja_env.filters.update( tojson=tojson_filter, latformat=lambda x, secs=True: format_lat_long(lat=x, secs=secs), longformat=lambda x, secs=True: format_lat_long(long=x, secs=secs), latlongformat=lambda x, secs=True: format_lat_long(secs=secs, *x), # By default filters need to be side-effect free. This is not # the case for this one, so we need to make it as a dummy # context filter so that jinja2 will not inline it. url=jinja2.contextfilter(lambda ctx, *a, **kw: url_to(*a, **kw)), asseturl=jinja2.contextfilter(lambda ctx, *a, **kw: get_asset_url(*a, **kw)), markdown=jinja2.contextfilter(lambda ctx, *a, **kw: Markdown(*a, **kw)), ) self.jinja_env.globals.update( F=F, url_to=url_to, site=site_proxy, config=config_proxy, bag=lookup_from_bag, get_random_id=lambda: uuid.uuid4().hex, ) self.jinja_env.filters.update( datetimeformat=_pass_locale(dates.format_datetime), dateformat=_pass_locale(dates.format_date), timeformat=_pass_locale(dates.format_time), ) from lektor.types import builtin_types self.types = builtin_types.copy() from lektor.publisher import builtin_publishers self.publishers = builtin_publishers.copy() # The plugins that are loaded for this environment. This is # modified by the plugin controller and registry methods on the # environment. self.plugin_controller = PluginController(self) self.plugins = {} self.plugin_ids_by_class = {} self.build_programs = [] self.special_file_assets = {} self.special_file_suffixes = {} self.custom_url_resolvers = [] self.custom_generators = [] if load_plugins: self.load_plugins()
def __init__(self, project, load_plugins=True): self.project = project self.root_path = os.path.abspath(project.tree) self.jinja_env = CustomJinjaEnvironment( autoescape=self.select_jinja_autoescape, extensions=['jinja2.ext.autoescape', 'jinja2.ext.with_'], loader=jinja2.FileSystemLoader( os.path.join(self.root_path, 'templates'))) from lektor.db import F self.jinja_env.filters.update( tojson=tojson_filter, latformat=lambda x, secs=True: format_lat_long(lat=x, secs=secs), longformat=lambda x, secs=True: format_lat_long(long=x, secs=secs), latlongformat=lambda x, secs=True: format_lat_long(secs=secs, *x), # By default filters need to be side-effect free. This is not # the case for this one, so we need to make it as a dummy # context filter so that jinja2 will not inline it. url=jinja2.contextfilter(lambda ctx, *a, **kw: url_to(*a, **kw)), asseturl=jinja2.contextfilter( lambda ctx, *a, **kw: get_asset_url(*a, **kw)), markdown=jinja2.contextfilter( lambda ctx, *a, **kw: Markdown(*a, **kw)), ) self.jinja_env.globals.update( F=F, url_to=url_to, site=site_proxy, config=config_proxy, bag=lookup_from_bag, get_random_id=lambda: uuid.uuid4().hex, ) self.jinja_env.filters.update( datetimeformat=_pass_locale(dates.format_datetime), dateformat=_pass_locale(dates.format_date), timeformat=_pass_locale(dates.format_time), ) from lektor.types import builtin_types self.types = builtin_types.copy() from lektor.publisher import builtin_publishers self.publishers = builtin_publishers.copy() # The plugins that are loaded for this environment. This is # modified by the plugin controller and registry methods on the # environment. self.plugin_controller = PluginController(self) self.plugins = {} self.plugin_ids_by_class = {} self.build_programs = [] self.special_file_assets = {} self.special_file_suffixes = {} self.custom_url_resolvers = [] self.custom_generators = [] if load_plugins: self.load_plugins()
def __init__(self, project): self.project = project self.root_path = os.path.abspath(project.tree) self.jinja_env = CustomJinjaEnvironment( autoescape=self.select_jinja_autoescape, extensions=['jinja2.ext.autoescape', 'jinja2.ext.with_'], loader=jinja2.FileSystemLoader( os.path.join(self.root_path, 'templates')) ) from lektor.db import F self.jinja_env.filters.update( tojson=tojson_filter, # By default filters need to be side-effect free. This is not # the case for this one, so we need to make it as a dummy # context filter so that jinja2 will not inline it. url=jinja2.contextfilter( lambda ctx, *a, **kw: url_to(*a, **kw)), asseturl=jinja2.contextfilter( lambda ctx, *a, **kw: url_to(get_asset_url(*a, **kw))), ) self.jinja_env.globals.update( F=F, url_to=url_to, site=site_proxy, config=config_proxy, bag=lookup_from_bag, get_random_id=lambda: uuid.uuid4().hex, ) from lektor.types import builtin_types self.types = builtin_types.copy() # The plugins that are loaded for this environment. This is # modified by the plugin controller and registry methods on the # environment. self.plugin_controller = PluginController(self) self.plugins = {} self.build_programs = [] self.special_file_assets = {} self.special_file_suffixes = {}
def __init__(self, project, load_plugins=True): self.project = project self.root_path = os.path.abspath(project.tree) self.theme_paths = [os.path.join(self.root_path, 'themes', theme) for theme in self.project.themes] if not self.theme_paths: # load the directories in the themes directory as the themes try: for fname in os.listdir(os.path.join(self.root_path, 'themes')): f = os.path.join(self.root_path, 'themes', fname) if os.path.isdir(f): self.theme_paths.append(f) except OSError: pass template_paths = [os.path.join(path, 'templates') for path in [self.root_path] + self.theme_paths] self.jinja_env = CustomJinjaEnvironment( autoescape=self.select_jinja_autoescape, extensions=['jinja2.ext.autoescape', 'jinja2.ext.with_'], loader=jinja2.FileSystemLoader( template_paths) ) from lektor.db import F, get_alts self.jinja_env.filters.update( tojson=tojson_filter, latformat=lambda x, secs=True: format_lat_long(lat=x, secs=secs), longformat=lambda x, secs=True: format_lat_long(long=x, secs=secs), latlongformat=lambda x, secs=True: format_lat_long(secs=secs, *x), # By default filters need to be side-effect free. This is not # the case for this one, so we need to make it as a dummy # context filter so that jinja2 will not inline it. url=jinja2.contextfilter( lambda ctx, *a, **kw: url_to(*a, **kw)), asseturl=jinja2.contextfilter( lambda ctx, *a, **kw: get_asset_url(*a, **kw)), markdown=jinja2.contextfilter( lambda ctx, *a, **kw: Markdown(*a, **kw)), ) self.jinja_env.globals.update( F=F, url_to=url_to, site=site_proxy, config=config_proxy, bag=lookup_from_bag, get_alts=get_alts, get_random_id=lambda: uuid.uuid4().hex, ) self.jinja_env.filters.update( datetimeformat=_pass_locale(dates.format_datetime), dateformat=_pass_locale(dates.format_date), timeformat=_pass_locale(dates.format_time), ) from lektor.types import builtin_types self.types = builtin_types.copy() from lektor.publisher import builtin_publishers self.publishers = builtin_publishers.copy() # The plugins that are loaded for this environment. This is # modified by the plugin controller and registry methods on the # environment. self.plugin_controller = PluginController(self) self.plugins = {} self.plugin_ids_by_class = {} self.build_programs = [] self.special_file_assets = {} self.special_file_suffixes = {} self.custom_url_resolvers = [] self.custom_generators = [] self.virtual_sources = {} if load_plugins: self.load_plugins() from lektor.db import siblings_resolver self.virtualpathresolver('siblings')(siblings_resolver)
def __init__(self, project, load_plugins=True, extra_flags=None): self.project = project self.root_path = os.path.abspath(project.tree) self.theme_paths = [ os.path.join(self.root_path, 'themes', theme) for theme in self.project.themes ] if not self.theme_paths: # load the directories in the themes directory as the themes try: for fname in os.listdir(os.path.join(self.root_path, 'themes')): f = os.path.join(self.root_path, 'themes', fname) if os.path.isdir(f): self.theme_paths.append(f) except OSError: pass template_paths = [ os.path.join(path, 'templates') for path in [self.root_path] + self.theme_paths ] self.jinja_env = CustomJinjaEnvironment( autoescape=self.select_jinja_autoescape, extensions=[ 'jinja2.ext.autoescape', 'jinja2.ext.with_', 'jinja2.ext.do' ], loader=jinja2.FileSystemLoader(template_paths)) from lektor.db import F, get_alts self.jinja_env.filters.update( tojson=tojson_filter, latformat=lambda x, secs=True: format_lat_long(lat=x, secs=secs), longformat=lambda x, secs=True: format_lat_long(long=x, secs=secs), latlongformat=lambda x, secs=True: format_lat_long(secs=secs, *x), # By default filters need to be side-effect free. This is not # the case for this one, so we need to make it as a dummy # context filter so that jinja2 will not inline it. url=jinja2.contextfilter(lambda ctx, *a, **kw: url_to(*a, **kw)), asseturl=jinja2.contextfilter( lambda ctx, *a, **kw: get_asset_url(*a, **kw)), markdown=jinja2.contextfilter( lambda ctx, *a, **kw: Markdown(*a, **kw)), ) self.jinja_env.globals.update( F=F, url_to=url_to, site=site_proxy, config=config_proxy, bag=lookup_from_bag, get_alts=get_alts, get_random_id=lambda: uuid.uuid4().hex, ) self.jinja_env.filters.update( datetimeformat=_pass_locale(dates.format_datetime), dateformat=_pass_locale(dates.format_date), timeformat=_pass_locale(dates.format_time), ) from lektor.types import builtin_types self.types = builtin_types.copy() from lektor.publisher import builtin_publishers self.publishers = builtin_publishers.copy() # The plugins that are loaded for this environment. This is # modified by the plugin controller and registry methods on the # environment. self.plugin_controller = PluginController(self, extra_flags) self.plugins = {} self.plugin_ids_by_class = {} self.build_programs = [] self.special_file_assets = {} self.special_file_suffixes = {} self.custom_url_resolvers = [] self.custom_generators = [] self.virtual_sources = {} if load_plugins: self.load_plugins() from lektor.db import siblings_resolver self.virtualpathresolver('siblings')(siblings_resolver)