From 1bd2e381960de9b4f89575112fb294a55e562b1d Mon Sep 17 00:00:00 2001 From: tcely Date: Fri, 24 Jan 2025 10:06:24 -0500 Subject: [PATCH 01/11] Create templatetags/__init__.py --- tubesync/sync/templatetags/__init__.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 tubesync/sync/templatetags/__init__.py diff --git a/tubesync/sync/templatetags/__init__.py b/tubesync/sync/templatetags/__init__.py new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/tubesync/sync/templatetags/__init__.py @@ -0,0 +1 @@ + From 4e710f503a9b70d92ac13d33485ce39134988c5d Mon Sep 17 00:00:00 2001 From: tcely Date: Fri, 24 Jan 2025 11:15:00 -0500 Subject: [PATCH 02/11] Create filters.py --- tubesync/sync/templatetags/filters.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 tubesync/sync/templatetags/filters.py diff --git a/tubesync/sync/templatetags/filters.py b/tubesync/sync/templatetags/filters.py new file mode 100644 index 00000000..54f72d98 --- /dev/null +++ b/tubesync/sync/templatetags/filters.py @@ -0,0 +1,10 @@ +from django import template +from django.template.defaultfilters import filesizeformat + +register = template.Library() + +@register.filter(is_safe=True) +def bytesformat(input): + intermediate = filesizeformat(input) + return intermediate.replace('B', 'iB') + From 22cec876366721d70a9c0b5fcd33c4335e6f61b2 Mon Sep 17 00:00:00 2001 From: tcely Date: Fri, 24 Jan 2025 11:37:51 -0500 Subject: [PATCH 03/11] Add fixB filter --- tubesync/sync/templatetags/filters.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tubesync/sync/templatetags/filters.py b/tubesync/sync/templatetags/filters.py index 54f72d98..54f17ed1 100644 --- a/tubesync/sync/templatetags/filters.py +++ b/tubesync/sync/templatetags/filters.py @@ -1,10 +1,20 @@ from django import template -from django.template.defaultfilters import filesizeformat +from django.template.defaultfilters import filesizeformat, stringfilter + register = template.Library() + +@register.filter(is_safe=True) +@stringfilter +def fixB(input): + return input.replace('B', 'iB') + + @register.filter(is_safe=True) def bytesformat(input): - intermediate = filesizeformat(input) - return intermediate.replace('B', 'iB') + output = filesizeformat(input) + if not (output and output.endswith('B')): + return output + return fixB(output) From f9c1cc28d89681c6cda8a3b09d06c327babc790b Mon Sep 17 00:00:00 2001 From: tcely Date: Fri, 24 Jan 2025 11:44:22 -0500 Subject: [PATCH 04/11] Use fixB filter --- tubesync/sync/templates/sync/dashboard.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tubesync/sync/templates/sync/dashboard.html b/tubesync/sync/templates/sync/dashboard.html index ccf4a6c3..26d2d187 100644 --- a/tubesync/sync/templates/sync/dashboard.html +++ b/tubesync/sync/templates/sync/dashboard.html @@ -1,4 +1,4 @@ -{% extends 'base.html' %}{% load humanize %} +{% extends 'base.html' %}{% load humanize %}{% load filters %} {% block headtitle %}Dashboard{% endblock %} @@ -57,9 +57,9 @@

{{ num_tasks }}

@@ -89,7 +89,7 @@

Largest downloads

{% for media in largest_downloads %}
{{ media.name }}
-
{{ media.downloaded_filesize|filesizeformat }}{% if media.downloaded_format %} in {{ media.downloaded_format }}{% endif %} from "{{ media.source.name }}"
+
{{ media.downloaded_filesize|filesizeformat|fixB }}{% if media.downloaded_format %} in {{ media.downloaded_format }}{% endif %} from "{{ media.source.name }}"
{% empty %} No media has been downloaded. @@ -125,7 +125,7 @@

Runtime information

Database - Database
{{ database_connection }}{% if database_filesize %} {{ database_filesize|filesizeformat }}{% endif %} + Database
{{ database_connection }}{% if database_filesize %} {{ database_filesize|filesizeformat|fixB }}{% endif %} From 09649a3a58e4d43da1b2a32016100ad486619ca5 Mon Sep 17 00:00:00 2001 From: tcely Date: Fri, 24 Jan 2025 11:51:52 -0500 Subject: [PATCH 05/11] Use fixB for other filesizeformat uses --- tubesync/sync/templates/sync/media-item.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tubesync/sync/templates/sync/media-item.html b/tubesync/sync/templates/sync/media-item.html index 026e5a54..8d273575 100644 --- a/tubesync/sync/templates/sync/media-item.html +++ b/tubesync/sync/templates/sync/media-item.html @@ -1,4 +1,4 @@ -{% extends 'base.html' %}{% load static %} +{% extends 'base.html' %}{% load static %}{% load filters %} {% block headtitle %}Media - {{ media.key }}{% endblock %} @@ -113,7 +113,7 @@

Media {{ media.key }} {{ download_state_ic File size - File size
{{ media.downloaded_filesize|filesizeformat }} + File size
{{ media.downloaded_filesize|filesizeformat|fixB }} Downloaded codecs From 840893c962e9eef371ae6945bdc454fb40b92938 Mon Sep 17 00:00:00 2001 From: tcely Date: Fri, 24 Jan 2025 12:15:19 -0500 Subject: [PATCH 06/11] Use `bytesformat` instead --- tubesync/sync/templates/sync/dashboard.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tubesync/sync/templates/sync/dashboard.html b/tubesync/sync/templates/sync/dashboard.html index 26d2d187..f25f36fc 100644 --- a/tubesync/sync/templates/sync/dashboard.html +++ b/tubesync/sync/templates/sync/dashboard.html @@ -57,9 +57,9 @@

{{ num_tasks }}

@@ -89,7 +89,7 @@

Largest downloads

{% for media in largest_downloads %}
{{ media.name }}
-
{{ media.downloaded_filesize|filesizeformat|fixB }}{% if media.downloaded_format %} in {{ media.downloaded_format }}{% endif %} from "{{ media.source.name }}"
+
{{ media.downloaded_filesize|bytesformat }}{% if media.downloaded_format %} in {{ media.downloaded_format }}{% endif %} from "{{ media.source.name }}"
{% empty %} No media has been downloaded. @@ -125,7 +125,7 @@

Runtime information

Database - Database
{{ database_connection }}{% if database_filesize %} {{ database_filesize|filesizeformat|fixB }}{% endif %} + Database
{{ database_connection }}{% if database_filesize %} ({{ database_filesize|bytesformat }}){% endif %} From f10940026332732d11015980a4625ade982f6d89 Mon Sep 17 00:00:00 2001 From: tcely Date: Fri, 24 Jan 2025 12:19:07 -0500 Subject: [PATCH 07/11] Use `bytesformat` instead --- tubesync/sync/templates/sync/media-item.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tubesync/sync/templates/sync/media-item.html b/tubesync/sync/templates/sync/media-item.html index 8d273575..ec92d317 100644 --- a/tubesync/sync/templates/sync/media-item.html +++ b/tubesync/sync/templates/sync/media-item.html @@ -113,7 +113,7 @@

Media {{ media.key }} {{ download_state_ic File size - File size
{{ media.downloaded_filesize|filesizeformat|fixB }} + File size
{{ media.downloaded_filesize|bytesformat }} Downloaded codecs From 42bf4d2aacad5a72009d3f8b3b299aaab963711a Mon Sep 17 00:00:00 2001 From: tcely Date: Fri, 24 Jan 2025 12:22:03 -0500 Subject: [PATCH 08/11] Remove `fixB` filter --- tubesync/sync/templatetags/filters.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tubesync/sync/templatetags/filters.py b/tubesync/sync/templatetags/filters.py index 54f17ed1..b295b2df 100644 --- a/tubesync/sync/templatetags/filters.py +++ b/tubesync/sync/templatetags/filters.py @@ -5,16 +5,10 @@ register = template.Library() -@register.filter(is_safe=True) -@stringfilter -def fixB(input): - return input.replace('B', 'iB') - - @register.filter(is_safe=True) def bytesformat(input): output = filesizeformat(input) if not (output and output.endswith('B')): return output - return fixB(output) + return output.replace('B', 'iB') From aa493208e286c873996020e0d89906a6db519fdd Mon Sep 17 00:00:00 2001 From: tcely Date: Sat, 25 Jan 2025 05:20:14 -0500 Subject: [PATCH 09/11] Restrict replacement to the end of the string --- tubesync/sync/templatetags/filters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tubesync/sync/templatetags/filters.py b/tubesync/sync/templatetags/filters.py index b295b2df..2af4c321 100644 --- a/tubesync/sync/templatetags/filters.py +++ b/tubesync/sync/templatetags/filters.py @@ -10,5 +10,5 @@ def bytesformat(input): output = filesizeformat(input) if not (output and output.endswith('B')): return output - return output.replace('B', 'iB') + return output.replace('B', 'iB', -1) From 0c5836d466d81f1f07de6c28dd34efa1b102d721 Mon Sep 17 00:00:00 2001 From: tcely Date: Sat, 25 Jan 2025 05:22:57 -0500 Subject: [PATCH 10/11] Remove unused `stringfilter` --- tubesync/sync/templatetags/filters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tubesync/sync/templatetags/filters.py b/tubesync/sync/templatetags/filters.py index 2af4c321..3540c3e4 100644 --- a/tubesync/sync/templatetags/filters.py +++ b/tubesync/sync/templatetags/filters.py @@ -1,5 +1,5 @@ from django import template -from django.template.defaultfilters import filesizeformat, stringfilter +from django.template.defaultfilters import filesizeformat register = template.Library() From 41c1b74c75068dd72e50e2b57cb12871665950b1 Mon Sep 17 00:00:00 2001 From: tcely Date: Sat, 25 Jan 2025 05:41:34 -0500 Subject: [PATCH 11/11] Split the string ourselves I don't know what I thought replace did, but the third argument is a count, not a start. --- tubesync/sync/templatetags/filters.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tubesync/sync/templatetags/filters.py b/tubesync/sync/templatetags/filters.py index 3540c3e4..d0c197aa 100644 --- a/tubesync/sync/templatetags/filters.py +++ b/tubesync/sync/templatetags/filters.py @@ -8,7 +8,7 @@ @register.filter(is_safe=True) def bytesformat(input): output = filesizeformat(input) - if not (output and output.endswith('B')): + if not (output and output.endswith('B', -1)): return output - return output.replace('B', 'iB', -1) + return output[: -1 ] + output[ -1 :].replace('B', 'iB', 1)