From 201e6d2982591e86911d42d245d3c5b7a0ddd5fc Mon Sep 17 00:00:00 2001 From: AdamPS <5490095+AdamPS@users.noreply.github.com> Date: Tue, 24 Jan 2023 17:22:51 +0000 Subject: [PATCH] Fix incorrectly skipped long breaks #443 (#444) * Improve error message to include information from the exception * #347 Take short or long breaks from tray Correction: get_break() should not alter the break queue. * Fix incorrectly skipped long breaks --- safeeyes/model.py | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/safeeyes/model.py b/safeeyes/model.py index 5dd3ee8..63c88e8 100644 --- a/safeeyes/model.py +++ b/safeeyes/model.py @@ -132,6 +132,19 @@ class BreakQueue: shorts = self.__short_queue longs = self.__long_queue + # Reset break that has just ended + if self.is_long_break(): + self.__current_break.time = self.__long_break_time + if self.__current_long == 0 and self.__is_random_order: + # Shuffle queue + self.__build_longs() + elif self.__current_break: + # Reduce the break time from the next long break (default) + if longs: + longs[self.__current_long].time -= shorts[self.__current_short].time + if self.__current_short == 0 and self.__is_random_order: + self.__build_shorts() + if self.is_empty(): return None @@ -144,11 +157,6 @@ class BreakQueue: else: break_obj = self.__next_short() - if self.__current_break is not None: - # Reset the time of long breaks - if self.__current_break.type == BreakType.LONG_BREAK: - self.__current_break.time = self.__long_break_time - self.__current_break = break_obj self.context['session']['break'] = self.__current_break.name @@ -177,17 +185,10 @@ class BreakQueue: shorts = self.__short_queue break_obj = shorts[self.__current_short] self.context['break_type'] = 'short' - # Reduce the break time from the next long break (default) - if longs: - longs[self.__current_long].time -= shorts[self.__current_short].time # Update the index to next self.__current_short = (self.__current_short + 1) % len(shorts) - # Shuffle queue - if self.__current_short == 0 and self.__is_random_order: - self.__build_shorts() - return break_obj def __next_long(self): @@ -198,10 +199,6 @@ class BreakQueue: # Update the index to next self.__current_long = (self.__current_long + 1) % len(longs) - # Shuffle queue - if self.__current_long == 0 and self.__is_random_order: - self.__build_longs() - return break_obj def __build_queue(self, break_type, break_configs, break_time, break_duration):