From e188195344cbdd86bd19a892c531ec034c31bb0d Mon Sep 17 00:00:00 2001 From: Mark Grassi Date: Sat, 28 Jan 2023 17:22:04 -0500 Subject: [PATCH] Improve utils hotkey handling --- utils/apparmor/ui.py | 30 ++++++++++++++---------------- utils/test/test-translations.py | 2 +- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/utils/apparmor/ui.py b/utils/apparmor/ui.py index 9c979376b..c2c56cbe1 100644 --- a/utils/apparmor/ui.py +++ b/utils/apparmor/ui.py @@ -105,16 +105,14 @@ def UI_Important(text): def get_translated_hotkey(translated, cmsg=''): - msg = 'PromptUser: ' + _('Invalid hotkey for') - # Originally (\S) was used but with translations it would not work :( - if re.search(r'\((\S+)\)', translated): - return re.search(r'\((\S+)\)', translated).groups()[0] - else: - if cmsg: - raise AppArmorException(cmsg) - else: - raise AppArmorException('%s %s' % (msg, translated)) + match = re.search(r'\((\S+)\)', translated) + if match: + return match.groups()[0].lower() + + if not cmsg: + cmsg = 'PromptUser: %s %s' % (_('Invalid hotkey for'), translated) + raise AppArmorException(cmsg) def UI_YesNo(text, default): @@ -122,8 +120,8 @@ def UI_YesNo(text, default): default = default.lower() yes = CMDS['CMD_YES'] no = CMDS['CMD_NO'] - yeskey = get_translated_hotkey(yes).lower() - nokey = get_translated_hotkey(no).lower() + yeskey = get_translated_hotkey(yes) + nokey = get_translated_hotkey(no) ans = 'XXXINVALIDXXX' while ans not in ('y', 'n'): if UI_mode == 'json': @@ -164,9 +162,9 @@ def UI_YesNoCancel(text, default): no = CMDS['CMD_NO'] cancel = CMDS['CMD_CANCEL'] - yeskey = get_translated_hotkey(yes).lower() - nokey = get_translated_hotkey(no).lower() - cancelkey = get_translated_hotkey(cancel).lower() + yeskey = get_translated_hotkey(yes) + nokey = get_translated_hotkey(no) + cancelkey = get_translated_hotkey(cancel) ans = 'XXXINVALIDXXX' while ans not in ('c', 'n', 'y'): @@ -401,7 +399,7 @@ class PromptQuestion: menutext = CMDS[cmd] - key = get_translated_hotkey(menutext).lower() + key = get_translated_hotkey(menutext) # Duplicate hotkey if keys.get(key, False): raise AppArmorException( @@ -420,7 +418,7 @@ class PromptQuestion: defaulttext = CMDS[default] defmsg = _('PromptUser: Invalid hotkey in default item') - default_key = get_translated_hotkey(defaulttext, defmsg).lower() + default_key = get_translated_hotkey(defaulttext, defmsg) if not keys.get(default_key, False): raise AppArmorException(_('PromptUser: Invalid default %s') % default) diff --git a/utils/test/test-translations.py b/utils/test/test-translations.py index b177dbfb0..a8c86f277 100644 --- a/utils/test/test-translations.py +++ b/utils/test/test-translations.py @@ -69,7 +69,7 @@ class TestHotkeyConflicts(AATest): keys = {} for key in params: text = t.gettext(CMDS[key]) - hotkey = get_translated_hotkey(text).lower() + hotkey = get_translated_hotkey(text) if keys.get(hotkey): raise Exception("Hotkey conflict: '{}' and '{}'".format(keys[hotkey], text))