diff --git a/frappe/desk/moduleview.py b/frappe/desk/moduleview.py index f5a1e47bf4..d91f49d004 100644 --- a/frappe/desk/moduleview.py +++ b/frappe/desk/moduleview.py @@ -42,6 +42,34 @@ def get_data(module): #set_last_modified(data) + exists_cache = {} + + def exists(name): + exists = exists_cache.get(name) + if not exists: + exists = frappe.db.exists(name) + exists_cache[name] = exists + return exists + + for section in data: + for item in section["items"]: + # Onboarding + + # First disable based on exists of depends_on list + dependencies = item.get("dependencies") or None + if dependencies: + incomplete_dependencies = [d for d in dependencies if not exists(d)] + if len(incomplete_dependencies): + item["incomplete_dependencies"] = incomplete_dependencies + + if item.get("onboard"): + # Mark Spotlights for initial + if item.get("type") == "doctype": + name = item.get("name") + count = exists(name) + + item["count"] = count + return data def build_config_from_file(module): diff --git a/frappe/public/js/frappe/views/components/ModuleDetail.vue b/frappe/public/js/frappe/views/components/ModuleDetail.vue index fe018dbe27..c34904674a 100644 --- a/frappe/public/js/frappe/views/components/ModuleDetail.vue +++ b/frappe/public/js/frappe/views/components/ModuleDetail.vue @@ -10,11 +10,23 @@ :key="section.label + item.label" :data-youtube-id="item.type==='help' ? item.youtube_id : false" > - {{ item.label || __(item.name) }} - + + + + + {{ item.label || __(item.name) }} + + +

@@ -30,7 +42,7 @@ export default { props: ['module_name', 'sections'], updated() { frappe.app.update_notification_count_in_modules(); - } + }, }