diff --git a/client.py b/client.py index fbc4029..51e8f28 100755 --- a/client.py +++ b/client.py @@ -475,7 +475,7 @@ def check_keys(options, recipients=None, quiet=False): if not recipients is None: # On cherche à savoir si on droppe ce recipient message = u"Abandonner le chiffrement pour cette clé ? (Si vous la conservez, il est posible que gpg crashe)" - if confirm(options, message): + if confirm(options, message, ('drop', fpr, mail)): drop = True # si on a répondu oui à "abandonner ?", on droppe elif options.drop_invalid and options.force: drop = True # ou bien si --drop-invalid avec --force nous autorisent à dropper silencieusement @@ -808,16 +808,29 @@ C'est-à-dire pour les utilisateurs suivants :\n%s""" % ( success, message = put_password(options, new_roles, ntexte) print(message.encode("utf-8")) -def confirm(options, text): - """Demande confirmation, sauf si on est mode ``--force``""" +_remember_dict = {} +def confirm(options, text, remember_key=None): + """Demande confirmation, sauf si on est mode ``--force``. + Si ``remember_key`` est fourni, il doit correspondre à un objet hashable + qui permettra de ne pas poser deux fois les mêmes questions. + """ + global _remember_dict if options.force: return True + if remember_key in _remember_dict: + return _remember_dict[remember_key] while True: out = raw_input((text + u' (o/n)').encode("utf-8")).lower() if out == 'o': - return True + res = True + break elif out == 'n': - return False + res = False + break + # Remember the answer + if remember_key is not None: + _remember_dict[remember_key] = res + return res @need_filename def remove_file(options):