29 lines
878 B
Python
29 lines
878 B
Python
from datetime import datetime, timedelta
|
|
from collections import OrderedDict
|
|
|
|
from .models import User
|
|
|
|
time_keys = set(("iat", "exp", "auth_time", "updated_at"))
|
|
|
|
|
|
def pretty_details(user: User, now: datetime) -> OrderedDict:
|
|
details = OrderedDict()
|
|
# breakpoint()
|
|
for key in sorted(time_keys):
|
|
try:
|
|
dt = datetime.fromtimestamp(user.userinfo[key])
|
|
except (KeyError, TypeError):
|
|
pass
|
|
else:
|
|
td = now - dt
|
|
td = timedelta(days=td.days, seconds=td.seconds)
|
|
if td.days < 0:
|
|
ptd = f"in {-td} h:m:s"
|
|
else:
|
|
ptd = f"{td} h:m:s ago"
|
|
details[key] = f"{user.userinfo[key]} - {dt} ({ptd})"
|
|
for key in sorted(user.userinfo):
|
|
if key in time_keys:
|
|
continue
|
|
details[key] = user.userinfo[key]
|
|
return details
|