From 140a449221d2b2e98f2c33a076814de4c164a936 Mon Sep 17 00:00:00 2001
From: atoav <dh@atoav.com>
Date: Thu, 23 Apr 2020 15:56:12 +0200
Subject: [PATCH] Fix Leaderport sorting and duration formatting

---
 bbbmon/__pycache__/bbbmon.cpython-37.pyc | Bin 10488 -> 10719 bytes
 bbbmon/bbbmon.py                         |  16 ++++++++--------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/bbbmon/__pycache__/bbbmon.cpython-37.pyc b/bbbmon/__pycache__/bbbmon.cpython-37.pyc
index 1d540c3a3ed4c1abcb44c95fc56ad8b6f28e9cec..17b0a83d7518866824e1374670ddfc3c80afa8f7 100644
GIT binary patch
delta 956
zcmewnct4oeiI<m)fq{V`XWqiN6%%<S8E0%%XJ%wck)Ojf*?_T=amwahj34-!nTot8
zZ{!oTWMg1paAsg&DAr<NU?^dzVOYSpkfE8emNA8K0aFcQ3X>EAh!kT;VFt69#TXVc
z2Qz50OcoQG=u{<GZDn9oYlTE+3h*&7ytH9pV9;bPvSVOixW!wNUy_&;U!0nppO;cx
zqz{r}D)I(NF&0l|6_$5q0XdkJhp8xlfq@~J5yWF)U|@n`u=50<&I38Egt3OPnK76_
zlhIF;smO<cfuSg1a)Yow|7MU!z=kn$Fct-F-Y3k-Sich_$N@5wg@ciUQG}@|2;u@u
zkVYqvjUb!A3K$p|Kq{F*T9UvvrZ6sGEMe+kkYrfM*v!btP{N$Tl)~J?P{ZKD(9GD*
zkj9w8lET`;k;0b3-pgFeRH0SF<iZfERLfk#kixNmu||>^q`8JUg;SEDgr$bLnQ<XA
z$e==t$y>y-C$AC}ocv$eX0o@mgwQFFwIH{!F;uA*6lLa>Om>uzn7mh9(nlC1#RGOx
z4FkwPnEx5UVXVnmWDoKbV-d(dMN%N2NrMOn1_lO@u|<vy3=CDuFhgx7pAqF}WSx9R
zR4&F9qz)V;EJg4jiQ+8IFDgk*iBGC50;LSFk(yBBK_=f41e+C~lbV>4T9lNZSd?-E
z<VH~NF|Z0TDll>}7KLth65GSbTI9#Tz%ZFtB0*T7+RDz*s8*rc%ErXBR-wAKD0p(c
zgcw^O*bS3sOGGk;E&eLO#uf?^2%G#{?lfb>=Hv2C%#4wfH_C`lR#dL$jRN_UsR)$B
ziXfr~l&hig!79O6<WH$2VTx`JQ2oQmm_FH8-I^^OWL?DMK6NAQ3{bk{h>y=r%*>0A
z*HkTv1<7fE2vF1%fzn2i0f-wj`L((!W5Q%b4PnNR$)*}cDxl<B1n~<<0mKs^Rs@Iu
eTaq!kTO(RXfJ=Z)fLnxHh(|zEN`-@kixB{ze#{2|

delta 935
zcmcZ~{3DRpiI<m)fq{WRbjHHCH4}Ly8E0)&XJ%we<xi2H!#r7!v6FGy<{gY5`0JUA
zycrl6ZZW6jmK3QoFfb%DfwVC&Ft9+eGXn!du>%7GLkeRJLl#3OV=Yq&h{cq`)XWsa
zRKt|QY{O8?T*6qxoWcSXVYOkXVM<}MVW?ruVoqbIVd`THX3%7>>gQ5WP*Ctl%_&GN
zQb;S!OD>trBUBf6izOwovN%(KkAWeIH6y>YsQ9G~0|P@8dv0c4X-R7FE%xHn<ovvp
zVojDJKagwLQZmbO^HYif7#J9e^cff!G+DsjDDnjfxPkO?7NzDUX6B`&7EL}QB+thI
z@)au=qX?rIV^Pp#L1hsuu*ZZL7#K<zY8aXsYZ*%zYZy})o0)<cG@1OW1gpU=skN$x
zx}sK-smKRpe$Zq+VSWBBpl|^N5(6U#V^Q$t9AQqz`duJFuw5)1j2w(2Ohq9e*D)1Y
zf;2iIhc7b&0|Q7U*cl+15{4AU1&k$3HH?xB3mKak85t_HY8YG?VwGx{N*Gd@7BJR;
z<v<}W$xy;v!_>^UkQt<|P$HZmg(a9llaY1u8u8@G6{3QZr;8~tvP|9~CdUhQ0W;JE
zlMjlDtK1SSD9X$$iO)$*Oi3+D%1<mxISO((8#s`J7`YgW!Z#a<?_m^<;w{N9Nz93d
zg+F7F{p63z!jriqJtxl)6ObzkWnf_N(_}3&0r}4rM1Z2BC>X>FncO59$r!QtjwBmf
zI7lF3@+0}vj8U7{DL64RMo<2zJc&035<H;jE&_>&PhPH44VDw1Y^55EMSi1d5~k>8
zbG1K=jG2>7G_1KZK~_b9&7FKfU25_a4PospP^#gGj|U}*_;^j#qIi%Z4G;lJ??s@<
zC^7(X<0fCyFcnP#sb?-ODJtRw34*dxQP^Y|O(VS^5Fg?_5DVfj5DR2u5!h~!Wks?e
hF{#Oo8p4zNHSL6ixCPh*xJ9^xcmy=1R5)0;7y;c)(`Wzy

diff --git a/bbbmon/bbbmon.py b/bbbmon/bbbmon.py
index ec3e2d0..2eee08b 100644
--- a/bbbmon/bbbmon.py
+++ b/bbbmon/bbbmon.py
@@ -166,20 +166,19 @@ def get_duration(meeting: XmlDictConfig) -> timedelta:
     return duration
 
 
-def strfdelta(duration: timedelta, fmt: str) -> str:
+def strfdelta(duration: timedelta) -> str:
     """
     Helper function for datetime.timedelta formatting, use like this:
     strfdelta(delta_obj, "{days} days {hours}:{minutes}:{seconds}")
     """
-    d = {"days": duration.days}
-    d["hours"], remainder = divmod(duration.seconds, 3600)
-    d["minutes"], d["seconds"] = divmod(remainder, 60)
-    return fmt.format(**d)
+    s = int(duration.total_seconds())
+
+    return '{:02}:{:02}:{:02}'.format(s // 3600, s % 3600 // 60, s % 60)
 
 
 def format_duration(meeting: XmlDictConfig) -> str:
     duration = get_duration(meeting)
-    return strfdelta(duration, "{hours}:{minutes}")
+    return strfdelta(duration)
 
 
 
@@ -200,7 +199,8 @@ def print_leaderboard(meetings: Iterable[XmlDictConfig], key: str):
     participantCount)
     """
     print("LEADERBOARD ({})".format(FRIENDLY_KEYNAMES[key]))
-    for m in meetings:
+    sorted_by = sorted([m for m in meetings], key=lambda x:int(x[key]), reverse=True)
+    for m in sorted_by:
         print("{:>5} {:<45} {}".format(m[key], m["meetingName"], get_formated_presenter_name(m))) 
 
 
@@ -213,7 +213,7 @@ def print_duration_leaderboard(meetings: Iterable[XmlDictConfig]):
     by_duration = sorted([m for m in meetings], key=lambda x:int(get_duration(x).total_seconds()), reverse=True)
 
     for m in by_duration:
-        print("{:>5} {:<45} {}".format(format_duration(m), m["meetingName"], get_formated_presenter_name(m))) 
+        print("{:>12} {:<45} {}".format(format_duration(m), m["meetingName"], get_formated_presenter_name(m))) 
 
 
 def print_overview(secret: Secret, bbb_url: Url):
-- 
GitLab