perf: keep jloader across requests
This doesn't have anything that needs to be created for each request.
This commit is contained in:
parent
e768f679ff
commit
a89fd99794
2 changed files with 26 additions and 20 deletions
|
|
@ -1,5 +1,9 @@
|
|||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# License: MIT. See LICENSE
|
||||
import frappe
|
||||
from frappe.utils.caching import site_cache
|
||||
|
||||
|
||||
def get_jenv():
|
||||
import frappe
|
||||
|
||||
|
|
@ -136,30 +140,32 @@ def guess_is_path(template):
|
|||
|
||||
|
||||
def get_jloader():
|
||||
jloader = _get_jloader()
|
||||
frappe.local.jloader = jloader # backward compat
|
||||
return jloader
|
||||
|
||||
|
||||
@site_cache(ttl=10 * 60, maxsize=5)
|
||||
def _get_jloader():
|
||||
from jinja2 import ChoiceLoader, PackageLoader, PrefixLoader
|
||||
|
||||
import frappe
|
||||
|
||||
if not getattr(frappe.local, "jloader", None):
|
||||
from jinja2 import ChoiceLoader, PackageLoader, PrefixLoader
|
||||
apps = frappe.get_hooks("template_apps")
|
||||
if not apps:
|
||||
apps = list(reversed(frappe.get_installed_apps(_ensure_on_bench=True)))
|
||||
|
||||
apps = frappe.get_hooks("template_apps")
|
||||
if not apps:
|
||||
apps = list(
|
||||
reversed(
|
||||
frappe.local.flags.web_pages_apps or frappe.get_installed_apps(_ensure_on_bench=True)
|
||||
)
|
||||
)
|
||||
if "frappe" not in apps:
|
||||
apps.append("frappe")
|
||||
|
||||
if "frappe" not in apps:
|
||||
apps.append("frappe")
|
||||
jloader = ChoiceLoader(
|
||||
# search for something like app/templates/...
|
||||
[PrefixLoader({app: PackageLoader(app, ".") for app in apps})]
|
||||
# search for something like templates/...
|
||||
+ [PackageLoader(app, ".") for app in apps]
|
||||
)
|
||||
|
||||
frappe.local.jloader = ChoiceLoader(
|
||||
# search for something like app/templates/...
|
||||
[PrefixLoader({app: PackageLoader(app, ".") for app in apps})]
|
||||
# search for something like templates/...
|
||||
+ [PackageLoader(app, ".") for app in apps]
|
||||
)
|
||||
|
||||
return frappe.local.jloader
|
||||
return jloader
|
||||
|
||||
|
||||
def set_filters(jenv):
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ def get_pages(app=None):
|
|||
if app:
|
||||
apps = [app]
|
||||
else:
|
||||
apps = frappe.local.flags.web_pages_apps or frappe.get_installed_apps()
|
||||
apps = frappe.get_installed_apps()
|
||||
|
||||
for app in apps:
|
||||
app_path = frappe.get_app_path(app)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue