mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-06-21 09:58:23 +02:00
Rewrite food apps, new feature some changes to model
This commit is contained in:
53
apps/food/utils.py
Normal file
53
apps/food/utils.py
Normal file
@ -0,0 +1,53 @@
|
||||
# Copyright (C) 2018-2025 by BDE ENS Paris-Saclay
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
seconds = (_('second'), _('seconds'))
|
||||
minutes = (_('minute'), _('minutes'))
|
||||
hours = (_('hour'), _('hours'))
|
||||
days = (_('day'), _('days'))
|
||||
weeks = (_('week'), _('weeks'))
|
||||
|
||||
|
||||
def plural(x):
|
||||
if x == 1:
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
def pretty_duration(duration):
|
||||
"""
|
||||
I receive datetime.timedelta object
|
||||
You receive string object
|
||||
"""
|
||||
text = []
|
||||
sec = duration.seconds
|
||||
d = duration.days
|
||||
|
||||
if d >= 7:
|
||||
w = d // 7
|
||||
text.append(str(w) + ' ' + weeks[plural(w)])
|
||||
d -= w * 7
|
||||
if d > 0:
|
||||
text.append(str(d) + ' ' + days[plural(d)])
|
||||
|
||||
if sec >= 3600:
|
||||
h = sec // 3600
|
||||
text.append(str(h) + ' ' + hours[plural(h)])
|
||||
sec -= h * 3600
|
||||
|
||||
if sec >= 60:
|
||||
m = sec // 60
|
||||
text.append(str(m) + ' ' + minutes[plural(m)])
|
||||
sec -= m * 60
|
||||
|
||||
if sec > 0:
|
||||
text.append(str(sec) + ' ' + seconds[plural(sec)])
|
||||
|
||||
if len(text) == 0:
|
||||
return ''
|
||||
if len(text) == 1:
|
||||
return text[0]
|
||||
if len(text) >= 2:
|
||||
return ', '.join(t for t in text[:-1]) + ' ' + _('and') + ' ' + text[-1]
|
Reference in New Issue
Block a user