* refactor(chalice): refactored errors * refactor(chalice): refactored metrics/cards/dashboards refactor(chalice): refactored sessions refactor(chalice): refactored sourcemaps
119 lines
5.9 KiB
Python
119 lines
5.9 KiB
Python
from chalicelib.core import projects
|
|
from chalicelib.core import users
|
|
from chalicelib.core.log_tools import datadog, stackdriver, sentry
|
|
from chalicelib.core.modules import TENANT_CONDITION
|
|
from chalicelib.utils import pg_client
|
|
|
|
|
|
def get_state(tenant_id):
|
|
pids = projects.get_projects_ids(tenant_id=tenant_id)
|
|
with pg_client.PostgresClient() as cur:
|
|
recorded = False
|
|
meta = False
|
|
|
|
if len(pids) > 0:
|
|
cur.execute(
|
|
cur.mogrify("""SELECT EXISTS(( SELECT 1
|
|
FROM public.sessions AS s
|
|
WHERE s.project_id IN %(ids)s)) AS exists;""",
|
|
{"ids": tuple(pids)})
|
|
)
|
|
recorded = cur.fetchone()["exists"]
|
|
meta = False
|
|
if recorded:
|
|
query = cur.mogrify("""SELECT EXISTS((SELECT 1
|
|
FROM public.projects AS p
|
|
LEFT JOIN LATERAL ( SELECT 1
|
|
FROM public.sessions
|
|
WHERE sessions.project_id = p.project_id
|
|
AND sessions.user_id IS NOT NULL
|
|
LIMIT 1) AS sessions(user_id) ON (TRUE)
|
|
WHERE {TENANT_CONDITION} AND p.deleted_at ISNULL
|
|
AND ( sessions.user_id IS NOT NULL OR p.metadata_1 IS NOT NULL
|
|
OR p.metadata_2 IS NOT NULL OR p.metadata_3 IS NOT NULL
|
|
OR p.metadata_4 IS NOT NULL OR p.metadata_5 IS NOT NULL
|
|
OR p.metadata_6 IS NOT NULL OR p.metadata_7 IS NOT NULL
|
|
OR p.metadata_8 IS NOT NULL OR p.metadata_9 IS NOT NULL
|
|
OR p.metadata_10 IS NOT NULL )
|
|
)) AS exists;""",
|
|
{"tenant_id": tenant_id})
|
|
cur.execute(query)
|
|
|
|
meta = cur.fetchone()["exists"]
|
|
|
|
return [
|
|
{"task": "Install OpenReplay",
|
|
"done": recorded,
|
|
"URL": "https://docs.openreplay.com/getting-started/quick-start"},
|
|
{"task": "Identify Users",
|
|
"done": meta,
|
|
"URL": "https://docs.openreplay.com/data-privacy-security/metadata"},
|
|
{"task": "Invite Team Members",
|
|
"done": len(users.get_members(tenant_id=tenant_id)) > 1,
|
|
"URL": "https://app.openreplay.com/client/manage-users"},
|
|
{"task": "Integrations",
|
|
"done": len(datadog.get_all(tenant_id=tenant_id)) > 0 \
|
|
or len(sentry.get_all(tenant_id=tenant_id)) > 0 \
|
|
or len(stackdriver.get_all(tenant_id=tenant_id)) > 0,
|
|
"URL": "https://docs.openreplay.com/integrations"}
|
|
]
|
|
|
|
|
|
def get_state_installing(tenant_id):
|
|
pids = projects.get_projects_ids(tenant_id=tenant_id)
|
|
with pg_client.PostgresClient() as cur:
|
|
recorded = False
|
|
|
|
if len(pids) > 0:
|
|
cur.execute(
|
|
cur.mogrify("""SELECT EXISTS(( SELECT 1
|
|
FROM public.sessions AS s
|
|
WHERE s.project_id IN %(ids)s)) AS exists;""",
|
|
{"ids": tuple(pids)})
|
|
)
|
|
recorded = cur.fetchone()["exists"]
|
|
|
|
return {"task": "Install OpenReplay",
|
|
"done": recorded,
|
|
"URL": "https://docs.openreplay.com/getting-started/quick-start"}
|
|
|
|
|
|
def get_state_identify_users(tenant_id):
|
|
with pg_client.PostgresClient() as cur:
|
|
query = cur.mogrify(f"""SELECT EXISTS((SELECT 1
|
|
FROM public.projects AS p
|
|
LEFT JOIN LATERAL ( SELECT 1
|
|
FROM public.sessions
|
|
WHERE sessions.project_id = p.project_id
|
|
AND sessions.user_id IS NOT NULL
|
|
LIMIT 1) AS sessions(user_id) ON (TRUE)
|
|
WHERE {TENANT_CONDITION} AND p.deleted_at ISNULL
|
|
AND ( sessions.user_id IS NOT NULL OR p.metadata_1 IS NOT NULL
|
|
OR p.metadata_2 IS NOT NULL OR p.metadata_3 IS NOT NULL
|
|
OR p.metadata_4 IS NOT NULL OR p.metadata_5 IS NOT NULL
|
|
OR p.metadata_6 IS NOT NULL OR p.metadata_7 IS NOT NULL
|
|
OR p.metadata_8 IS NOT NULL OR p.metadata_9 IS NOT NULL
|
|
OR p.metadata_10 IS NOT NULL )
|
|
)) AS exists;""",
|
|
{"tenant_id": tenant_id})
|
|
cur.execute(query)
|
|
|
|
meta = cur.fetchone()["exists"]
|
|
|
|
return {"task": "Identify Users",
|
|
"done": meta,
|
|
"URL": "https://docs.openreplay.com/data-privacy-security/metadata"}
|
|
|
|
|
|
def get_state_manage_users(tenant_id):
|
|
return {"task": "Invite Team Members",
|
|
"done": len(users.get_members(tenant_id=tenant_id)) > 1,
|
|
"URL": "https://app.openreplay.com/client/manage-users"}
|
|
|
|
|
|
def get_state_integrations(tenant_id):
|
|
return {"task": "Integrations",
|
|
"done": len(datadog.get_all(tenant_id=tenant_id)) > 0 \
|
|
or len(sentry.get_all(tenant_id=tenant_id)) > 0 \
|
|
or len(stackdriver.get_all(tenant_id=tenant_id)) > 0,
|
|
"URL": "https://docs.openreplay.com/integrations"}
|