From a8963cf4653b9d2257fea3cbf68a584991dc7cff Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 14 Aug 2023 08:51:48 -0400 Subject: [PATCH] workaround ill-formatted duration --- catalog/music/models.py | 2 +- common/static/scss/_form.scss | 9 +++++++++ common/templatetags/duration.py | 18 ++++++++++-------- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/catalog/music/models.py b/catalog/music/models.py index 7ed03577..fb4a7a28 100644 --- a/catalog/music/models.py +++ b/catalog/music/models.py @@ -56,7 +56,7 @@ class Album(Item): "bandcamp_album_id", ] release_date = jsondata.DateField(_("发行日期"), null=True, blank=True) - duration = jsondata.IntegerField(_("时长"), null=True, blank=True) + duration = jsondata.IntegerField(_("时长"), null=True, blank=True, help_text=_("毫秒数")) artist = jsondata.ArrayField( models.CharField(blank=True, default="", max_length=200), verbose_name=_("艺术家"), diff --git a/common/static/scss/_form.scss b/common/static/scss/_form.scss index d6321dbd..b1426bfd 100644 --- a/common/static/scss/_form.scss +++ b/common/static/scss/_form.scss @@ -1,3 +1,12 @@ +.content-page { + form { + .helptext { + position: relative; + top: calc(0em - var(--pico-spacing)); + font-style: italic; + } + } +} // override django_jsonform/react-json-form styles .rjf-form-wrapper { input[type="text"] { diff --git a/common/templatetags/duration.py b/common/templatetags/duration.py index 4568dfe9..0961df42 100644 --- a/common/templatetags/duration.py +++ b/common/templatetags/duration.py @@ -1,9 +1,8 @@ from django import template from django.template.defaultfilters import stringfilter from django.utils.safestring import mark_safe -from django.utils.text import Truncator -from catalog.common.models import ItemCategory, item_categories +from catalog.common.models import item_categories from catalog.search.views import visible_categories as _visible_categories register = template.Library() @@ -22,12 +21,15 @@ def all_categories(): @register.filter(is_safe=True) @stringfilter def duration_format(value, unit): - duration = int(value or 0) // int(unit or 1) - h = duration // 3600 - m = duration % 3600 // 60 - s = duration % 60 - return f"{h}:{m:02}:{s:02}" if h else f"{m}:{s:02}" - # return (f"{h}小时 " if h else "") + (f"{m}分钟" if m else "") + try: + duration = int(value or 0) // int(unit or 1) + h = duration // 3600 + m = duration % 3600 // 60 + s = duration % 60 + return f"{h}:{m:02}:{s:02}" if h else f"{m:02}:{s:02}" + # return (f"{h}小时 " if h else "") + (f"{m}分钟" if m else "") + except: + return f"{value} (format error)" @register.filter(is_safe=True)