From 761c8465833fe98d79e1a88204495afa94aff194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Clgen=20Sar=C4=B1kavak?= Date: Tue, 19 Nov 2024 18:01:16 +0300 Subject: [PATCH] Handle no_color flag in formats with colored titles --- django/core/management/commands/listurls.py | 30 ++++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/django/core/management/commands/listurls.py b/django/core/management/commands/listurls.py index 041dc38696..c08a7df8d3 100644 --- a/django/core/management/commands/listurls.py +++ b/django/core/management/commands/listurls.py @@ -84,11 +84,13 @@ class Command(BaseCommand): url_patterns.sort() # Apply colors - if ( + self.is_color_enabled = ( color.supports_color() and (not no_color) and (format not in COLORLESS_FORMATS) - ): + ) + + if self.is_color_enabled: url_patterns = self.apply_color(url_patterns=url_patterns) # Apply formatting @@ -140,11 +142,10 @@ class Command(BaseCommand): widths.append(len(max(columns, key=len)) + margin) # Headers - headers = ( - self.style.HEADER("Route"), - self.style.HEADER("View"), - self.style.HEADER("Name"), - ) + headers = ["Route", "View", "Name"] + + if self.is_color_enabled: + headers = [self.style.HEADER(header) for header in headers] header_parts = [] for width, header in zip(widths, headers, strict=False): @@ -189,9 +190,18 @@ class Command(BaseCommand): formatted_str = StringIO() for route, view, name in url_patterns: - route_str = f"{self.style.HEADER('Route:')} {route}" - view_str = f"{self.style.HEADER('View:')} {view}" - name_str = f"{self.style.HEADER('Name:')} {name}" if name else "" + route_title = "Route:" + view_title = "View:" + name_title = "Name:" + + if self.is_color_enabled: + route_title = self.style.HEADER(route_title) + view_title = self.style.HEADER(view_title) + name_title = self.style.HEADER(name_title) + + route_str = f"{route_title} {route}" + view_str = f"{view_title} {view}" + name_str = f"{name_title} {name}" if name else "" separator = "-" * 20 + "\n" parts = (