workaround ill-formatted duration

This commit is contained in:
Your Name 2023-08-14 08:51:48 -04:00 committed by Henri Dickson
parent 4649a109bd
commit a8963cf465
3 changed files with 20 additions and 9 deletions

View file

@ -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=_("艺术家"),

View file

@ -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"] {

View file

@ -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)