From 84de08e3fe25c7eadf5cbb2f18b83acf3536fc2a Mon Sep 17 00:00:00 2001 From: Inessa Vasilevskaya Date: Tue, 6 Sep 2022 15:26:52 +0200 Subject: [PATCH] Make checks for missing answers more strict Previously only presence of one section in the answerfile has been verified, which led to false-positive preupgrade reports when some other key has been present in the dialog section instead of the required one. OAMG-7521 --- leapp/messaging/__init__.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/leapp/messaging/__init__.py b/leapp/messaging/__init__.py index 1ecc42e..9896179 100644 --- a/leapp/messaging/__init__.py +++ b/leapp/messaging/__init__.py @@ -152,10 +152,17 @@ class BaseMessaging(object): """ self._stop_after_phase.set(True) + def _unanswered_questions(self, dialog): + userchoices = dialog.get_answers(self._answers) + res = [s for s in dialog.answerfile_sections.keys() if s.split('.', 2)[1] not in userchoices] + return res + def register_dialog(self, dialog, actor): + # FIXME(ivasilev) Make sure it works correctly in case of a dialog with several questions. Currently there + # is no such dialog in actors but this code should be revisited if this changes. OAMG-7523 self._dialogs.append(dialog) - userchoices = dialog.get_answers(self._answers) - if not userchoices: + unanswered = self._unanswered_questions(dialog) + if unanswered: # produce DialogModel messages for all the dialogs that don't have answers in answerfile stable_key = dialog.key if dialog.key else hashlib.sha1( ','.join(sorted(dialog.answerfile_sections.keys())).encode('utf-8')).hexdigest() @@ -164,6 +171,7 @@ class BaseMessaging(object): key=stable_key), actor) else: # update dialogs with answers from answerfile. That is necessary for proper answerfile generation + userchoices = dialog.get_answers(self._answers) for component, value in userchoices.items(): dialog_component = dialog.component_by_key(component) if dialog_component: -- 2.37.2