seitime-frappe/frappe/utils/modules.py
2025-12-29 07:28:41 +00:00

34 lines
1 KiB
Python

import frappe
from frappe import _
from frappe.utils.caching import redis_cache
def get_modules_from_all_apps_for_user(user: str | None = None) -> list[dict]:
user = user or frappe.session.user
all_modules = get_modules_from_all_apps()
global_blocked_modules = frappe.get_cached_doc("User", "Administrator").get_blocked_modules()
user_blocked_modules = frappe.get_cached_doc("User", user).get_blocked_modules()
blocked_modules = global_blocked_modules + user_blocked_modules
allowed_modules_list = [m for m in all_modules if m.get("module_name") not in blocked_modules]
return allowed_modules_list
def get_modules_from_all_apps():
modules_list = []
for app in frappe.get_installed_apps():
modules_list += get_modules_from_app(app)
return modules_list
@redis_cache
def get_modules_from_app(app):
return frappe.get_all("Module Def", filters={"app_name": app}, fields=["module_name", "app_name as app"])
def is_domain(module):
return module.get("category") == "Domains"
def is_module(module):
return module.get("type") == "module"