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
92 lines
3.3 KiB
Python
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))}
|