From 5590fcb246ba8322c08e485c657d2a14ac30591a Mon Sep 17 00:00:00 2001
From: Tanner Prestegard <tanner.prestegard@ligo.org>
Date: Fri, 3 May 2019 11:17:38 -0500
Subject: [PATCH] Rework URLconf application namespacing for API sub-apps

The previous method is removed in Django 2.0 and is causing
all kinds of warnings in testing with pytest.
---
 gracedb/api/urls.py                | 10 +++++++---
 gracedb/api/utils.py               |  3 ++-
 gracedb/api/v1/superevents/urls.py |  1 +
 gracedb/api/v1/urls.py             |  9 +++++----
 4 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/gracedb/api/urls.py b/gracedb/api/urls.py
index 60e3f4ac2..14c81ff91 100644
--- a/gracedb/api/urls.py
+++ b/gracedb/api/urls.py
@@ -1,9 +1,13 @@
 from django.conf.urls import url, include
 
+from .v1 import urls as v1_urls
+from .v2 import urls as v2_urls
+
 app_name = 'api'
 
+
 urlpatterns = [
-    url(r'^', include('api.v1.urls', namespace='default')),
-    url(r'^v1/', include('api.v1.urls', namespace='v1')),
-    url(r'^v2/', include('api.v2.urls', namespace='v2')),
+    url(r'^', include((v1_urls, 'default'))),
+    url(r'^v1/', include((v1_urls, 'v1'))),
+    url(r'^v2/', include((v2_urls, 'v2'))),
 ]
diff --git a/gracedb/api/utils.py b/gracedb/api/utils.py
index f62d96f7b..c36cf1e0c 100644
--- a/gracedb/api/utils.py
+++ b/gracedb/api/utils.py
@@ -71,6 +71,7 @@ def is_api_request(request_path):
     api_app_name = 'api'
 
     resolver_match = resolve(request_path)
-    if (resolver_match.app_name == api_app_name):
+    if (resolver_match.app_names and
+        resolver_match.app_names[0] == api_app_name):
         return True
     return False
diff --git a/gracedb/api/v1/superevents/urls.py b/gracedb/api/v1/superevents/urls.py
index a7e18bb38..0ba80993f 100644
--- a/gracedb/api/v1/superevents/urls.py
+++ b/gracedb/api/v1/superevents/urls.py
@@ -3,6 +3,7 @@ from django.conf.urls import url, include
 from .views import *
 from .settings import SUPEREVENT_LOOKUP_REGEX
 
+
 # URL kwarg for superevent detail and nested pages
 SUPEREVENT_DETAIL_ROOT = '(?P<{lookup_url_kwarg}>{regex})'.format(
     lookup_url_kwarg=SupereventViewSet.lookup_url_kwarg,
diff --git a/gracedb/api/v1/urls.py b/gracedb/api/v1/urls.py
index 26cdfdc52..b4d4597b8 100644
--- a/gracedb/api/v1/urls.py
+++ b/gracedb/api/v1/urls.py
@@ -5,6 +5,9 @@ from django.conf.urls import url, include
 from .main.views import GracedbRoot, PerformanceInfo, TagList, UserInfoView, \
     CertDebug, CertInfosDebug
 
+from .events import urls as event_urls
+from .superevents import urls as superevent_urls
+
 
 urlpatterns = [
     # Root level API resources ------------------------------------------------
@@ -26,10 +29,8 @@ urlpatterns = [
     #    name='cert-infos-debug'),
 
     # Events section of the API -----------------------------------------------
-    url(r'^events/', include('api.v1.events.urls',
-        namespace='events')),
+    url(r'^events/', include((event_urls, 'events'))),
 
     # Superevents section of the API ------------------------------------------
-    url(r'^superevents/', include('api.v1.superevents.urls',
-        namespace='superevents')),
+    url(r'^superevents/', include((superevent_urls, 'superevents'))),
 ]
-- 
GitLab