From c3b87df1b0e5d21459204bf1c102f3824ca46208 Mon Sep 17 00:00:00 2001 From: Athanasius <github@miggy.org> Date: Wed, 26 May 2021 16:07:34 +0100 Subject: [PATCH] EngineerProgress: Progress can be for a single engineer, no array This tweak means we'll look in the event itself instead, but still won't cope with missing expected keys. That's up next.... --- monitor.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/monitor.py b/monitor.py index eeedfbd6..304dc4a4 100644 --- a/monitor.py +++ b/monitor.py @@ -1651,7 +1651,7 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below :param entry: Journal event dict :return: True if passes validation, else False. """ - # The event should have at least one of thes + # The event should have at least one of these if 'Engineers' not in entry and 'Progress' not in entry: logger.warning(f"EngineerProgress has neither 'Engineers' nor 'Progress': {entry=}") return False @@ -1687,7 +1687,13 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below return False if 'Progress' in entry: - for e in entry['Engineers']: + # Progress can be only a single Engineer, so it's not an array + # { "timestamp":"2021-05-24T17:57:52Z", + # "event":"EngineerProgress", + # "Engineer":"Felicity Farseer", + # "EngineerID":300100, + # "Progress":"Invited" } + for e in entry.get('Engineers', entry): for f in ('Engineer', 'EngineerID', 'Rank', 'Progress', 'RankProgress'): if f not in e: logger.warning(f"Engineer entry without '{f}' key: {e=} in {entry=}")