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