Files
upstream-frappe-crm/crm/demo/api.py
upstream-mirror db69de1c11
Some checks failed
Frontend / Unit Tests & Coverage (push) Has been skipped
Regenerate POT file (translatable strings) / Regenerate POT file (develop) (push) Failing after 1m13s
Regenerate POT file (translatable strings) / Regenerate POT file (main-hotfix) (push) Failing after 6s
Server / Tests (frappe ${{ matrix.frappe-branch }}) (push) Has been skipped
Server / Resolve frappe matrix (push) Failing after 1s
Frontend / Lint (push) Failing after 1s
Frontend / Production Build (push) Failing after 1s
Server / Coverage Wrap Up (push) Has been skipped
Frontend / Coverage Wrap Up (push) Has been skipped
snapshot of https://github.com/frappe/crm.git (develop, 2026-09-18; blobs > 131072B omitted)
2026-09-18 01:36:01 +05:00

92 lines
3.3 KiB
Python

import json
import frappe
from frappe.utils.telemetry import capture
DEMO_STATE_KEY = "crm_demo_data_created"
DEMO_LEADS_KEY = "crm_demo_leads"
DEMO_NOTES_KEY = "crm_demo_notes"
DEMO_TASKS_KEY = "crm_demo_tasks"
DEMO_CALL_LOGS_KEY = "crm_demo_call_logs"
DEMO_ACTIVITIES_KEY = "crm_demo_activities"
DEMO_DEALS_KEY = "crm_demo_deals"
def create_demo_data(_args: dict | None = None):
if frappe.db.get_default(DEMO_STATE_KEY):
return
from crm.demo.activities import create_demo_activities
from crm.demo.call_logs import create_demo_call_logs
from crm.demo.deals import create_demo_deals
from crm.demo.leads import create_demo_leads
from crm.demo.notes import create_demo_notes
from crm.demo.tasks import create_demo_tasks
from crm.demo.users import create_demo_users
demo_users = create_demo_users()
lead_names = create_demo_leads(demo_users)
note_names = create_demo_notes(lead_names, demo_users)
task_names = create_demo_tasks(lead_names, demo_users)
call_log_names = create_demo_call_logs(lead_names, demo_users)
activity_data = create_demo_activities(lead_names, demo_users)
from crm.demo.leads import rebackdate_demo_leads
rebackdate_demo_leads(lead_names, demo_users)
deal_data = create_demo_deals(lead_names, demo_users)
frappe.db.set_default(DEMO_LEADS_KEY, json.dumps(lead_names))
frappe.db.set_default(DEMO_NOTES_KEY, json.dumps(note_names))
frappe.db.set_default(DEMO_TASKS_KEY, json.dumps(task_names))
frappe.db.set_default(DEMO_CALL_LOGS_KEY, json.dumps(call_log_names))
frappe.db.set_default(DEMO_ACTIVITIES_KEY, json.dumps(activity_data))
frappe.db.set_default(DEMO_DEALS_KEY, json.dumps(deal_data))
frappe.db.set_default(DEMO_STATE_KEY, "1")
capture("demo_data_created", "crm")
@frappe.whitelist()
def clear_demo_data():
frappe.only_for(["Sales Manager", "System Manager"], True)
if not frappe.db.get_default(DEMO_STATE_KEY):
return
from crm.demo.activities import delete_demo_activities
from crm.demo.call_logs import delete_demo_call_logs
from crm.demo.deals import delete_demo_deals
from crm.demo.leads import delete_demo_leads
from crm.demo.notes import delete_demo_notes
from crm.demo.tasks import delete_demo_tasks
from crm.demo.users import DEMO_USER_EMAILS, delete_demo_users
lead_names = json.loads(frappe.db.get_default(DEMO_LEADS_KEY) or "[]")
note_names = json.loads(frappe.db.get_default(DEMO_NOTES_KEY) or "[]")
task_names = json.loads(frappe.db.get_default(DEMO_TASKS_KEY) or "[]")
call_log_names = json.loads(frappe.db.get_default(DEMO_CALL_LOGS_KEY) or "[]")
activity_data = json.loads(frappe.db.get_default(DEMO_ACTIVITIES_KEY) or "{}")
deal_data = json.loads(frappe.db.get_default(DEMO_DEALS_KEY) or "{}")
delete_demo_deals(deal_data, lead_names)
delete_demo_activities(activity_data)
delete_demo_notes(note_names)
delete_demo_tasks(task_names)
delete_demo_call_logs(call_log_names)
delete_demo_leads(lead_names)
delete_demo_users(DEMO_USER_EMAILS)
frappe.db.set_default(DEMO_LEADS_KEY, None)
frappe.db.set_default(DEMO_NOTES_KEY, None)
frappe.db.set_default(DEMO_TASKS_KEY, None)
frappe.db.set_default(DEMO_CALL_LOGS_KEY, None)
frappe.db.set_default(DEMO_ACTIVITIES_KEY, None)
frappe.db.set_default(DEMO_DEALS_KEY, None)
frappe.db.set_default(DEMO_STATE_KEY, None)
capture("demo_data_cleared", "crm")
@frappe.whitelist()
def get_demo_state():
return {"demo_data_created": bool(frappe.db.get_default(DEMO_STATE_KEY))}