0
0
mirror of https://github.com/PostHog/posthog.git synced 2024-11-25 11:17:50 +01:00
posthog/ee/urls.py
Karl-Aksel Puulmann 3f93f935b5
fix(query-performance): /api/instance_status creates excessive load (#13390)
* fix(query-performance): avoid mounting systemLogic for the sake of feature flag internals

instance status does some heavy queries so mounting it each time is expensive. Instead lets bundle away the relevant
logic into where it doesnt get loaded needlessly

* fix(query-performance): avoid loading /api/instance_status all the time

This endpoint does some expensive queries not needed for majority of navigation

* Add tests for new endpoint

* Cache whether DLQ is OK for an hour

* Remove redis caching

* Skip DLQ checks on cloud

* Improve a comment

* Simplify feature flag fix
2022-12-19 13:59:19 +02:00

86 lines
2.8 KiB
Python

from typing import Any, List
from django.urls.conf import path
from rest_framework_extensions.routers import NestedRegistryItem
from ee.api import integration
from posthog.api.routing import DefaultRouterPlusPlus
from .api import (
authentication,
billing,
dashboard_collaborator,
debug_ch_queries,
explicit_team_member,
feature_flag_role_access,
hooks,
license,
organization_resource_access,
role,
sentry_stats,
session_recording_playlist,
subscription,
)
def extend_api_router(
root_router: DefaultRouterPlusPlus,
*,
projects_router: NestedRegistryItem,
organizations_router: NestedRegistryItem,
project_dashboards_router: NestedRegistryItem,
project_feature_flags_router: NestedRegistryItem,
) -> None:
root_router.register(r"billing-v2", billing.BillingViewset, "billing")
root_router.register(r"license", license.LicenseViewSet)
root_router.register(r"debug_ch_queries", debug_ch_queries.DebugCHQueries, "debug_ch_queries")
root_router.register(r"integrations", integration.PublicIntegrationViewSet)
organization_roles_router = organizations_router.register(
r"roles",
role.RoleViewSet,
"organization_roles",
["organization_id"],
)
organization_roles_router.register(
r"role_memberships",
role.RoleMembershipViewSet,
"organization_role_memberships",
["organization_id", "role_id"],
)
project_feature_flags_router.register(
r"role_access",
feature_flag_role_access.FeatureFlagRoleAccessViewSet,
"feature_flag_role_access",
["team_id", "feature_flag_id"],
)
organizations_router.register(
r"resource_access",
organization_resource_access.OrganizationResourceAccessViewSet,
"organization_resource_access",
["organization_id"],
)
projects_router.register(r"hooks", hooks.HookViewSet, "project_hooks", ["team_id"])
projects_router.register(
r"explicit_members", explicit_team_member.ExplicitTeamMemberViewSet, "project_explicit_members", ["team_id"]
)
project_dashboards_router.register(
r"collaborators",
dashboard_collaborator.DashboardCollaboratorViewSet,
"project_dashboard_collaborators",
["team_id", "dashboard_id"],
)
projects_router.register(r"subscriptions", subscription.SubscriptionViewSet, "subscriptions", ["team_id"])
projects_router.register(
r"session_recording_playlists",
session_recording_playlist.SessionRecordingPlaylistViewSet,
"project_session_recording_playlists",
["team_id"],
)
urlpatterns: List[Any] = [
path("api/saml/metadata/", authentication.saml_metadata_view),
path("api/sentry_stats/", sentry_stats.sentry_stats),
]