Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions api/app/settings/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -414,8 +414,6 @@
)
MIDDLEWARE.append("core.middleware.admin.AdminWhitelistMiddleware")

ROOT_URLCONF = "app.urls"

TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
Expand Down Expand Up @@ -1153,6 +1151,8 @@
default=5,
)

ROOT_URLCONF = "app.urls.common" if TASK_PROCESSOR_MODE else "app.urls.api"

# Webhook settings
DISABLE_WEBHOOKS = env.bool("DISABLE_WEBHOOKS", False)
RETRY_WEBHOOKS = TASK_RUN_METHOD == TaskRunMethod.TASK_PROCESSOR
Expand Down
Empty file added api/app/urls/__init__.py
Empty file.
62 changes: 27 additions & 35 deletions api/app/urls.py → api/app/urls/api.py
Original file line number Diff line number Diff line change
@@ -1,50 +1,42 @@
import importlib

from common.core.urls import urlpatterns as core_urlpatterns
from django.conf import settings
from django.contrib import admin
from django.urls import include, path, re_path
from django.views.generic.base import TemplateView

from app import views
from app.urls.common import urlpatterns as common_urlpatterns
from users.views import password_reset_redirect

from . import views

urlpatterns = [
*core_urlpatterns,
path("processor/", include("task_processor.urls")),
*common_urlpatterns,
re_path(r"^api/v1/", include("api.urls.deprecated", namespace="api-deprecated")),
re_path(r"^api/v1/", include("api.urls.v1", namespace="api-v1")),
re_path(r"^api/v2/", include("api.urls.v2", namespace="api-v2")),
re_path(r"^admin/", admin.site.urls),
re_path(
r"^sales-dashboard/",
include("sales_dashboard.urls", namespace="sales_dashboard"),
),
# this url is used to generate email content for the password reset workflow
re_path(
r"^password-reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,"
r"13}-[0-9A-Za-z]{1,20})/$",
password_reset_redirect,
name="password_reset_confirm",
),
re_path(
r"^config/project-overrides",
views.project_overrides,
name="project_overrides",
),
path(
"robots.txt",
TemplateView.as_view(template_name="robots.txt", content_type="text/plain"),
),
]

if not settings.TASK_PROCESSOR_MODE:
urlpatterns += [
re_path(
r"^api/v1/", include("api.urls.deprecated", namespace="api-deprecated")
),
re_path(r"^api/v1/", include("api.urls.v1", namespace="api-v1")),
re_path(r"^api/v2/", include("api.urls.v2", namespace="api-v2")),
re_path(r"^admin/", admin.site.urls),
re_path(
r"^sales-dashboard/",
include("sales_dashboard.urls", namespace="sales_dashboard"),
),
# this url is used to generate email content for the password reset workflow
re_path(
r"^password-reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,"
r"13}-[0-9A-Za-z]{1,20})/$",
password_reset_redirect,
name="password_reset_confirm",
),
re_path(
r"^config/project-overrides",
views.project_overrides,
name="project_overrides",
),
path(
"robots.txt",
TemplateView.as_view(template_name="robots.txt", content_type="text/plain"),
),
]

if settings.DEBUG:
urlpatterns = [
re_path(r"^__debug__/", include("debug_toolbar.urls")),
Expand Down
7 changes: 7 additions & 0 deletions api/app/urls/common.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from common.core.urls import urlpatterns as core_urlpatterns
from django.urls import include, path

urlpatterns = [
*core_urlpatterns,
path("processor/", include("task_processor.urls")),
]
9 changes: 3 additions & 6 deletions api/tests/unit/onboarding/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@

import pytest
from django.urls import clear_url_caches
from pytest_mock import MockerFixture


def reload_onboarding_urls() -> None:
import api.urls.v1 as v1_urls
import app.urls as root_urls
import app.urls.api as root_urls
import onboarding.urls as onboarding_urls

reload(onboarding_urls)
Expand All @@ -18,12 +17,10 @@ def reload_onboarding_urls() -> None:


@pytest.fixture()
def is_oss(mocker: MockerFixture) -> None:
mocker.patch("common.core.utils.is_oss", return_value=True)
def oss_mode() -> None:
reload_onboarding_urls()


@pytest.fixture()
def is_saas(mocker: MockerFixture) -> None:
mocker.patch("common.core.utils.is_saas", return_value=True)
def saas_mode(saas_mode: None) -> None:
reload_onboarding_urls()
14 changes: 8 additions & 6 deletions api/tests/unit/onboarding/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@


def test_send_onboarding_request_to_saas_flagsmith_view_for_non_admin_user(
test_user_client: APIClient, is_oss: MagicMock
test_user_client: APIClient,
oss_mode: None,
) -> None:
# Given
url = reverse("api-v1:onboarding:send-onboarding-request")
Expand All @@ -25,7 +26,8 @@ def test_send_onboarding_request_to_saas_flagsmith_view_for_non_admin_user(


def test_send_onboarding_request_to_saas_flagsmith_view_without_org(
admin_client_original: APIClient, is_oss: MagicMock
admin_client_original: APIClient,
oss_mode: None,
) -> None:
# Given
url = reverse("api-v1:onboarding:send-onboarding-request")
Expand All @@ -46,7 +48,7 @@ def test_send_onboarding_request_to_saas_flagsmith_view(
mocker: MockerFixture,
organisation: Organisation,
admin_user: FFAdminUser,
is_oss: MagicMock,
oss_mode: None,
) -> None:
# Given
mocked_requests = mocker.patch("onboarding.tasks.requests")
Expand All @@ -73,7 +75,7 @@ def test_receive_support_request_from_self_hosted_view_without_hubspot_token(
settings: SettingsWrapper,
api_client: APIClient,
db: None,
is_saas: MagicMock,
saas_mode: MagicMock,
) -> None:
# Given
settings.HUBSPOT_ACCESS_TOKEN = None
Expand All @@ -93,7 +95,7 @@ def test_receive_support_request_from_self_hosted_view(
api_client: APIClient,
mocker: MockerFixture,
db: None,
is_saas: None,
saas_mode: None,
) -> None:
# Given
settings.HUBSPOT_ACCESS_TOKEN = "some-token"
Expand Down Expand Up @@ -123,7 +125,7 @@ def test_receive_support_request_throttling(
api_client: APIClient,
mocker: MockerFixture,
db: None,
is_saas: MagicMock,
saas_mode: MagicMock,
) -> None:
# Given
settings.HUBSPOT_ACCESS_TOKEN = "some-token"
Expand Down
Loading