diff --git a/main.py b/main.py index e622b4d..5b0fccb 100755 --- a/main.py +++ b/main.py @@ -25,7 +25,7 @@ import json import textwrap import random from PIL import Image, ImageEnhance, ImageFont, ImageDraw -from datetime import datetime +from datetime import datetime, timezone try: import secrets @@ -94,7 +94,7 @@ def fetch_classes(): logging.info('Fetching classes...') r = requests.get('https://api.my.protospace.ca/sessions/', timeout=5) r.raise_for_status() - return r.json() + return r.json()['results'] except BaseException as e: logging.exception(e) return 'Error' @@ -511,11 +511,13 @@ while True: if classes == 'Error': stdscr.addstr(5, 1, 'Error. Go back and try again.') elif classes: - classes_in_view = classes['results'][classes_start:6+classes_start] + classes_sorted = sorted(classes, key=lambda x: x['datetime']) + classes_in_view = classes_sorted[classes_start:6+classes_start] lines = [] for session in classes_in_view: - lines.append(session['course_data']['name']) + past = datetime.now(tz=timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ') > session['datetime'] + lines.append(('[PAST] ' if past else '') + session['course_data']['name']) lines.append('{:<30} {:<12} {:<7} {:<7}'.format( format_date(session['datetime']), 'Protospace' if session['course_data']['id'] in [413, 317, 273] else session['instructor_name'], @@ -779,6 +781,7 @@ while True: current_screen = 'protocoin' else: try_highlight() + elif current_screen == 'debug': if button == 'b' or c == KEY_ESCAPE: current_screen = 'home' @@ -786,31 +789,36 @@ while True: break else: try_highlight() + elif current_screen == 'stats': if button == 'b' or c == KEY_ESCAPE: current_screen = 'home' stats = {} else: try_highlight() + elif current_screen == 'about': if button == 'b' or c == KEY_ESCAPE: current_screen = 'home' else: try_highlight() + elif current_screen == 'classes': if button == 'b' or c == KEY_ESCAPE: current_screen = 'home' classes = {} classes_start = 0 elif button == 'j' or c == curses.KEY_DOWN or c == KEY_SPACE: - classes_start += 1 - stdscr.erase() + if classes_start+6 < len(classes): + classes_start += 6 + stdscr.erase() elif button == 'k' or c == curses.KEY_UP: if classes_start > 0: - classes_start -= 1 + classes_start -= 6 stdscr.erase() else: try_highlight() + elif current_screen == 'asimov': if button == 'b' or c == KEY_ESCAPE: current_screen = 'home' @@ -826,6 +834,7 @@ while True: stdscr.erase() else: try_highlight() + elif current_screen == 'info': if button == 'b' or c == KEY_ESCAPE: current_screen = 'home' @@ -841,6 +850,7 @@ while True: stdscr.erase() else: try_highlight() + elif current_screen == 'protocoin': if button == 'b' or c == KEY_ESCAPE: current_screen = 'home' @@ -855,6 +865,7 @@ while True: stdscr.erase() else: try_highlight() + elif current_screen == 'nametag': if nametag_member: if c == curses.KEY_BACKSPACE: @@ -896,6 +907,7 @@ while True: nametag_guest = '_' else: try_highlight() + elif current_screen == 'sign': if sign_to_send: if c == curses.KEY_BACKSPACE: @@ -919,6 +931,7 @@ while True: sign_to_send = '_' else: try_highlight() + elif current_screen == 'message': if message_to_send: if c == curses.KEY_BACKSPACE: @@ -963,6 +976,7 @@ while True: message_to_send = '_' else: try_highlight() + elif current_screen == 'think': if think_to_send: if c == curses.KEY_BACKSPACE: