From 94780c9b5a684c4e0c0b649d6e07081b0a52274e Mon Sep 17 00:00:00 2001
From: Christian Breunig <christian@breunig.cc>
Date: Sun, 21 Apr 2024 10:34:43 +0200
Subject: vyos.utils: T6244: add support for year timebase in
 seconds_to_human()

We only supported calculating seconds to weeks but not seconds to years. This
has been added.

Testcase:
from vyos.utils.convert import seconds_to_human

minute = 60
hour = minute * 60
day = hour * 24
week = day * 7
year = day * 365.25

for separator in ['', ' ', '-', '/']:
  print(f'----- Using separator "{separator}" -----')
  print(seconds_to_human(10, separator))
  print(seconds_to_human(5* minute, separator))
  print(seconds_to_human(3* hour, separator))
  print(seconds_to_human(4* day, separator))
  print(seconds_to_human(7 * week, separator))
  print(seconds_to_human(10 * year, separator))
  print(seconds_to_human(5*year + 4*week + 3*day + 2*hour + minute + 5, separator))
  print()

cpo@LR1.wue3:~$ ./foo.py
----- Using separator "" -----
10s
5m
3h
4d
7w
10y
5y4w3d2h1m5s

----- Using separator " " -----
10s
5m
3h
4d
7w
10y
5y 4w 3d 2h 1m 5s

----- Using separator "-" -----
10s
5m
3h
4d
7w
10y
5y-4w-3d-2h-1m-5s

----- Using separator "/" -----
10s
5m
3h
4d
7w
10y
5y/4w/3d/2h/1m/5s

(cherry picked from commit 8d8f3137d174a43a259cbe50dd12730805f0200c)
---
 python/vyos/utils/convert.py | 5 +++++
 1 file changed, 5 insertions(+)

(limited to 'python/vyos')

diff --git a/python/vyos/utils/convert.py b/python/vyos/utils/convert.py
index da207b9fb..41e65081f 100644
--- a/python/vyos/utils/convert.py
+++ b/python/vyos/utils/convert.py
@@ -19,12 +19,17 @@ def seconds_to_human(s, separator=""):
     """
     s = int(s)
 
+    year = 60 * 60 * 24 * 365.25
     week = 60 * 60 * 24 * 7
     day = 60 * 60 * 24
     hour = 60 * 60
 
     result = []
 
+    years = s // year
+    if years > 0:
+        result.append(f'{int(years)}y')
+        s = int(s % year)
 
     weeks = s // week
     if weeks > 0:
-- 
cgit v1.2.3