feat: capture user persona during setup (#56705)

This commit is contained in:
Nikhil Kothari
2026-07-01 17:21:15 +05:30
committed by GitHub
parent f493417c3d
commit bbc4d2ccab
2 changed files with 149 additions and 5 deletions

View File

@@ -4,12 +4,13 @@
import frappe
from frappe import _
from frappe.utils.telemetry import capture
from erpnext.setup.demo import setup_demo_data
from erpnext.setup.setup_wizard.operations import install_fixtures as fixtures
def get_setup_stages(args=None):
def get_setup_stages(args=None): # nosemgrep
stages = [
{
"status": _("Installing presets"),
@@ -28,6 +29,13 @@ def get_setup_stages(args=None):
{"fn": setup_defaults, "args": args, "fail_msg": _("Failed to setup defaults")},
],
},
{
"status": _("Personalizing your setup"),
"fail_msg": _("Failed to personalize your setup"),
"tasks": [
{"fn": capture_user_persona, "args": args, "fail_msg": _("Failed to personalize your setup")}
],
},
]
if args.get("setup_demo"):
@@ -42,15 +50,38 @@ def get_setup_stages(args=None):
return stages
def stage_fixtures(args):
def capture_user_persona(args): # nosemgrep
"""Send the persona answers captured on the setup slide to telemetry."""
if not args:
return
capture(
"user_persona_submitted",
"erpnext",
properties={
"implementing_for": args.get("persona_implementing_for"),
"company_size": args.get("persona_company_size"),
"industry": args.get("persona_industry"),
"current_system": args.get("persona_current_system"),
"module_accounting": bool(args.get("module_accounting")),
"module_stock": bool(args.get("module_stock")),
"module_manufacturing": bool(args.get("module_manufacturing")),
"module_projects": bool(args.get("module_projects")),
"country": args.get("country"),
"language": args.get("language"),
},
)
def stage_fixtures(args): # nosemgrep
fixtures.install(args.get("country"))
def setup_company(args):
def setup_company(args): # nosemgrep
fixtures.install_company(args)
def setup_defaults(args):
def setup_defaults(args): # nosemgrep
fixtures.install_defaults(frappe._dict(args))
@@ -59,7 +90,7 @@ def setup_demo(args): # nosemgrep
# Only for programmatical use
def setup_complete(args=None):
def setup_complete(args=None): # nosemgrep
stage_fixtures(args)
setup_company(args)
setup_defaults(args)