57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
"""Basic telemetry for improving apps.
|
|
|
|
WARNING: Everything in this file should be treated "internal" and is subjected to change or get
|
|
removed without any warning.
|
|
"""
|
|
|
|
import frappe
|
|
from frappe.utils import getdate
|
|
from frappe.utils.caching import site_cache
|
|
|
|
# posthog provider
|
|
from .posthog import POSTHOG_HOST_FIELD, POSTHOG_PROJECT_FIELD
|
|
from .posthog import capture as ph_capture
|
|
from .posthog import capture_doc as _ph_capture_doc
|
|
from .posthog import init_telemetry as _init_ph_telemetry
|
|
from .posthog import is_enabled as is_posthog_enabled
|
|
|
|
# pulse provider
|
|
from .pulse.client import capture as pulse_capture
|
|
from .pulse.client import is_enabled as is_pulse_enabled
|
|
|
|
|
|
def add_bootinfo(bootinfo):
|
|
bootinfo.telemetry_site_age = site_age()
|
|
bootinfo.telemetry_provider = []
|
|
|
|
if is_posthog_enabled():
|
|
bootinfo.enable_telemetry = True
|
|
bootinfo.telemetry_provider.append("posthog")
|
|
bootinfo.posthog_host = frappe.conf.get(POSTHOG_HOST_FIELD)
|
|
bootinfo.posthog_project_id = frappe.conf.get(POSTHOG_PROJECT_FIELD)
|
|
|
|
if is_pulse_enabled():
|
|
bootinfo.enable_telemetry = True
|
|
bootinfo.telemetry_provider.append("pulse")
|
|
|
|
|
|
def capture(event, app, **kwargs):
|
|
if is_posthog_enabled():
|
|
ph_capture(event, app, **kwargs)
|
|
|
|
if is_pulse_enabled():
|
|
pulse_capture(event, app=app, **kwargs)
|
|
|
|
|
|
@site_cache(ttl=60 * 60 * 12)
|
|
def site_age():
|
|
try:
|
|
est_creation = frappe.db.get_value("User", "Administrator", "creation")
|
|
return (getdate() - getdate(est_creation)).days + 1
|
|
except Exception:
|
|
pass
|
|
|
|
|
|
# for backward compatibility
|
|
init_telemetry = _init_ph_telemetry
|
|
capture_doc = _ph_capture_doc
|