Skip to content

Commit 72e1672

Browse files
authored
Improve checksum display (#2879)
1 parent 4b52a83 commit 72e1672

File tree

4 files changed

+39
-2
lines changed

4 files changed

+39
-2
lines changed

downloads/templatetags/download_tags.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from django import template
66
from django.core.cache import cache
77
from django.utils.html import format_html
8+
from django.utils.safestring import mark_safe
89

910
from downloads.models import Release
1011

@@ -90,6 +91,31 @@ def has_sha256(files):
9091
return any(f.sha256_sum for f in files)
9192

9293

94+
@register.filter
95+
def wbr_wrap(value: str | None) -> str:
96+
"""
97+
Insert <wbr> tags for optional line breaking, prioritising halfway break.
98+
99+
Uses inline-block spans for halves so the browser prefers breaking
100+
at the midpoint first, then within each half if still too wide.
101+
"""
102+
if not value:
103+
return value or ""
104+
105+
interval = 16
106+
chunks = [value[i : i + interval] for i in range(0, len(value), interval)]
107+
108+
# Split into two halves, each half has internal <wbr> breaks
109+
midpoint = len(chunks) // 2
110+
first_half = "<wbr>".join(chunks[:midpoint])
111+
second_half = "<wbr>".join(chunks[midpoint:])
112+
113+
return mark_safe(
114+
f'<span class="checksum-half">{first_half}</span><wbr>'
115+
f'<span class="checksum-half">{second_half}</span>'
116+
)
117+
118+
93119
@register.filter
94120
def sort_windows(files):
95121
if not files:

static/sass/style.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1899,6 +1899,10 @@ table th, table td {
18991899
border-left: none; }
19001900
table tfoot {
19011901
border-top: 1px solid #dddddd; }
1902+
table .checksum {
1903+
font-size: 0.85em; }
1904+
table .checksum .checksum-half {
1905+
display: inline-block; }
19021906

19031907
.row-title {
19041908
border-top: 5px solid #d4dbe1;

static/sass/style.scss

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,6 +1012,12 @@ table {
10121012
}
10131013

10141014
tfoot { border-top: 1px solid $grey-lighterer; }
1015+
1016+
.checksum {
1017+
font-size: 0.85em;
1018+
1019+
.checksum-half { display: inline-block; }
1020+
}
10151021
}
10161022

10171023
.documentation-help { }

templates/downloads/release_detail.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
{% load has_sha256 from download_tags %}
99
{% load sort_windows from download_tags %}
1010
{% load get_eol_info from download_tags %}
11+
{% load wbr_wrap from download_tags %}
1112

1213
{% block body_attributes %}class="python downloads"{% endblock %}
1314

@@ -126,9 +127,9 @@ <h3>{{ f.os.name }}</h3>
126127
<td>{% if f.gpg_signature_file %}<a href="{{ f.gpg_signature_file }}">SIG</a>{% endif %}</td>
127128
{% endif %}
128129
{% if release_files|has_sha256 %}
129-
<td>{{ f.sha256_sum }}</td>
130+
<td><code class="checksum">{{ f.sha256_sum|wbr_wrap }}</code></td>
130131
{% elif release_files|has_md5 %}
131-
<td>{{ f.md5_sum }}</td>
132+
<td><code class="checksum">{{ f.md5_sum|wbr_wrap }}</code></td>
132133
{% endif %}
133134
</tr>
134135
{% endfor %}

0 commit comments

Comments
 (0)