From 70bc3f3da10cce8eddecb59d50acf7df6ba43a1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Linds=C3=A4th?= Date: Tue, 14 Jul 2020 16:27:43 +0200 Subject: [PATCH] Add deprecation indicator for URLs when using JSON format. --- .../management/commands/show_urls.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/django_extensions/management/commands/show_urls.py b/django_extensions/management/commands/show_urls.py index bb0a42d95..de24be956 100644 --- a/django_extensions/management/commands/show_urls.py +++ b/django_extensions/management/commands/show_urls.py @@ -121,7 +121,11 @@ 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, *deprecated) in view_functions: + if len(deprecated) > 0: + deprecated = deprecated[0] + else: + deprecated = False if hasattr(func, '__globals__'): func_globals = func.__globals__ elif hasattr(func, 'func_globals'): @@ -148,7 +152,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)), @@ -203,6 +207,8 @@ 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: @@ -211,8 +217,13 @@ def extract_views_from_urlpatterns(self, urlpatterns, base='', namespace=None): name = '{0}:{1}'.format(namespace, p.name) else: name = p.name + if hasattr(p, "deprecated"): + deprecated = p.deprecated + 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)):