Django's url resolver and pattern classes have been renamed in 2.0+

They are now URLResolver and URLPattern, respectively.  The API has
changed as well, but fortunately it looks like what we are doing here
doesn't depend on anything that was changed.
This commit is contained in:
Jeff Bradberry
2019-06-13 13:58:01 -04:00
parent 25c14382db
commit f24b08316d

View File

@@ -6,7 +6,7 @@ from unittest.mock import PropertyMock
from awx.api.urls import urlpatterns as api_patterns from awx.api.urls import urlpatterns as api_patterns
# Django # Django
from django.urls import RegexURLResolver, RegexURLPattern from django.urls import URLResolver, URLPattern
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
@@ -20,24 +20,24 @@ def all_views():
''' '''
returns a set of all views in the app returns a set of all views in the app
''' '''
patterns = set([]) patterns = set()
url_views = set([]) url_views = set()
# Add recursive URL patterns # Add recursive URL patterns
unprocessed = set(api_patterns) unprocessed = set(api_patterns)
while unprocessed: while unprocessed:
to_process = unprocessed.copy() to_process = unprocessed.copy()
unprocessed = set([]) unprocessed = set()
for pattern in to_process: for pattern in to_process:
if hasattr(pattern, 'lookup_str') and not pattern.lookup_str.startswith('awx.api'): if hasattr(pattern, 'lookup_str') and not pattern.lookup_str.startswith('awx.api'):
continue continue
patterns.add(pattern) patterns.add(pattern)
if isinstance(pattern, RegexURLResolver): if isinstance(pattern, URLResolver):
for sub_pattern in pattern.url_patterns: for sub_pattern in pattern.url_patterns:
if sub_pattern not in patterns: if sub_pattern not in patterns:
unprocessed.add(sub_pattern) unprocessed.add(sub_pattern)
# Get view classes # Get view classes
for pattern in patterns: for pattern in patterns:
if isinstance(pattern, RegexURLPattern) and hasattr(pattern.callback, 'view_class'): if isinstance(pattern, URLPattern) and hasattr(pattern.callback, 'view_class'):
url_views.add(pattern.callback.view_class) url_views.add(pattern.callback.view_class)
return url_views return url_views