seitime-frappe/frappe/www/desk.py
Ankush Menat 29be54a35d
perf: misc v16 fixes (#35790)
* perf: Reduce queries for setup wizard progress

These are queried on boot continuously, can just cache installed app doc.

* fix: remove stray db.commit in csrf generation
2026-01-09 11:06:06 +00:00

66 lines
2 KiB
Python

# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: MIT. See LICENSE
import os
no_cache = 1
import json
import re
from urllib.parse import urlencode
import frappe
import frappe.sessions
from frappe import _
from frappe.utils.jinja_globals import is_rtl
SCRIPT_TAG_PATTERN = re.compile(r"\<script[^<]*\</script\>")
CLOSING_SCRIPT_TAG_PATTERN = re.compile(r"</script\>")
def get_context(context):
if frappe.session.user == "Guest":
frappe.response["status_code"] = 403
frappe.msgprint(_("Log in to access this page."))
frappe.redirect(f"/login?{urlencode({'redirect-to': frappe.request.path})}")
elif frappe.session.data.user_type == "Website User":
frappe.throw(_("You are not permitted to access this page."), frappe.PermissionError)
try:
boot = frappe.sessions.get()
except Exception as e:
raise frappe.SessionBootFailed from e
# this needs commit
csrf_token = frappe.sessions.get_csrf_token()
hooks = frappe.get_hooks()
app_include_js = hooks.get("app_include_js", []) + frappe.conf.get("app_include_js", [])
app_include_css = hooks.get("app_include_css", []) + frappe.conf.get("app_include_css", [])
app_include_icons = hooks.get("app_include_icons", [])
if frappe.get_system_settings("enable_telemetry") and os.getenv("FRAPPE_SENTRY_DSN"):
app_include_js.append("sentry.bundle.js")
context.update(
{
"no_cache": 1,
"build_version": frappe.utils.get_build_version(),
"app_include_js": app_include_js,
"app_include_css": app_include_css,
"app_include_icons": app_include_icons,
"layout_direction": "rtl" if is_rtl() else "ltr",
"lang": frappe.local.lang,
"sounds": hooks["sounds"],
"boot": boot,
"desk_theme": boot.get("desk_theme") or "Light",
"csrf_token": csrf_token,
"google_analytics_id": frappe.conf.get("google_analytics_id"),
"google_analytics_anonymize_ip": frappe.conf.get("google_analytics_anonymize_ip"),
"app_name": (
frappe.get_website_settings("app_name") or frappe.get_system_settings("app_name") or "Frappe"
),
}
)
return context