Skip to content

Commit

Permalink
Add deprecation indicator for URLs when using JSON format. Based on r…
Browse files Browse the repository at this point in the history
…elease 3.0.2.
  • Loading branch information
alkanen committed Jul 15, 2020
1 parent 98cd113 commit 4ef7af2
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions django_extensions/management/commands/show_urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,12 @@ def handle(self, *args, **options):
raise CommandError("Error occurred while trying to load %s: %s" % (getattr(settings, urlconf), str(e)))

view_functions = self.extract_views_from_urlpatterns(urlconf.urlpatterns)
for (func, regex, url_name) in view_functions:
for (func, regex, url_name, *dep_status) in view_functions:
if dep_status:
deprecated = bool(dep_status[0])
else:
deprecated = False

if hasattr(func, '__globals__'):
func_globals = func.__globals__
elif hasattr(func, 'func_globals'):
Expand All @@ -148,7 +153,7 @@ def handle(self, *args, **options):
decorator = ', '.join(decorators)

if format_style == 'json':
views.append({"url": url, "module": module, "name": url_name, "decorators": decorator})
views.append({"url": url, "module": module, "name": url_name, "decorators": decorator, "deprecated": deprecated})
else:
views.append(fmtr.format(
module='{0}.{1}'.format(style.MODULE(func.__module__), style.MODULE_NAME(func_name)),
Expand Down Expand Up @@ -203,6 +208,7 @@ def extract_views_from_urlpatterns(self, urlpatterns, base='', namespace=None):
"""
views = []
for p in urlpatterns:
deprecated = False
if isinstance(p, (URLPattern, RegexURLPattern)):
try:
if not p.name:
Expand All @@ -211,8 +217,12 @@ def extract_views_from_urlpatterns(self, urlpatterns, base='', namespace=None):
name = '{0}:{1}'.format(namespace, p.name)
else:
name = p.name
deprecated = getattr(p, "deprecated", False)

pattern = describe_pattern(p)
views.append((p.callback, base + pattern, name))
views.append(
(p.callback, base + pattern, name, deprecated)
)
except ViewDoesNotExist:
continue
elif isinstance(p, (URLResolver, RegexURLResolver)):
Expand Down

0 comments on commit 4ef7af2

Please sign in to comment.