Tâche #20982
Scénario #20669: Pouvoir transformer un VPS xenial en anglais en Eolebase
L’utilitaire « question_ouinon » ne fonctionne pas en anglais
Description
Pour reproduire :
- Démarrer
Ubuntu Xenial English no LVM + context (amd64)
- Appliquer la procédure pour basculer le serveur en EOLE (pensez à ajouter le dépôt candidat en attendant que #20938 passe en stable)
- Copier le fichier de configuration
aca.eolebase
- Ajuster l’adresse IP
CreoleSet adresse_ip_eth0 <IP VUE DANS OPENNEBULA>
- Exécuter
instance
Première question :
Create new administrator user account eole2? [yes/no] [non] : ################################################ # Modificating password for user account eole2 # ################################################ New password: Confirming new password: Create new administrator user account eole3? [yes/no] [non] : no ################################################ # Modificating password for user account eole3 # ################################################ New password: Confirming new password: Create new administrator user account eole4? [yes/no] [non] : non ################################################ # Modificating password for user account eole4 # ################################################ New password:
Il semble que non
ne corresponde pas à yes/no
;-)
L’API de question_ouinon
est très étrange :
- Cette fonction permet de poser une question à l’utilisateur avec seulement deux réponses possibles
oui
ounon
- On passe les valeurs par défaut (interactive et non-interactive) en tant que chaîne de caractère
- La fonction renvoi la chaîne de caractère correspondant au choix de l’utilisateur
- L’appelant doit vérifier la chaîne retournée par la fonction par rapport à la chaîne de caratère voulue et agir en conséquence
Par example, dans creole:creole/reconfigure.py@c11808e#639 :
prompt = _('Create new administrator user account {0}?')
if user != 'eole' and ihm.question_ouinon(prompt.format(user)) == _(u'no'):
break
Nous pourrions définir une nouvelle fonction :
- Utilisation des booléens natifs à python
True
etFalse
- Retourne un booléen
True
l’utilisateur à choisioui/yes
False
l’utilisateur à choisinon/false
def prompt_boolean(prompt, interactive=True, default=False, default_interactive=None, level='info'):
"""Prompt the user and return her choice
:param `str` prompt: prompt string to display to the user
:param `bool` interactive: I don't know what's for
:param `bool` default: default value
:param `bool` default_interactive: default value if interactive is ``True``
:param `str` level: log level
"""
...
Cela permettrait de remplacer le code reconfigure par :
prompt = _('Create new administrator user account {0}?')
if user != 'eole' and not ihm.prompt_boolean(prompt.format(user)):
break
L’ancienne fonction serait notée deprecated
.
J’ai trouvé 25 appels à question_ouinon
(shell et python) dans les dépôts EOLE, aucun dans les dépôts MTES et Envole:
./arv/posttemplate/00-arv: if question_ouinon(question, level='warn') == 'oui': ./conf-sphynx/scripts/init_sphynx: if question_ouinon(question, level='warn') == 'non': ./conf-sphynx/scripts/init_sphynx: if question_ouinon(question, level='warn') == 'non': ./conf-sphynx/scripts/init_sphynx: if question_ouinon(question, level='warn') == 'oui': ./creole/bin/Maj-Auto: assert question_ouinon(_(u"Do you wish to proceed?")) == 'oui' ./creole/creole/reconfigure.py: if ihm.question_ouinon(_(u"Proceeding with instantiation ?"), ./creole/creole/reconfigure.py: if ihm.question_ouinon(_(u"Force execution?"), ./creole/creole/reconfigure.py: if user != 'eole' and ihm.question_ouinon(prompt.format(user)) == _(u'no'): ./creole/creole/reconfigure.py: if ihm.question_ouinon(_(u"""An update is recommended. ./creole/creole/reconfigure.py: if ihm.question_ouinon(_(u"""Reboot is necessary. ./creole/upgrade/Upgrade-Auto: if question_ouinon(confirmation_msg.format(args.release)) != 'oui': ./eole-password/bin/eolepasswd: res = ihm.question_ouinon(question, interactive=True, default='non') ./eole-vpn/scripts/active_rvp: rep = question_ouinon("configurer en mode manuel", default='non') ./eole-vpn/scripts/active_rvp: rep = question_ouinon("Etes-vous certain de vouloir désactiver le VPN ?", default='non') ./eolesql/scripts/mysql_pwd.py: if question_ouinon('\nVoulez-vous que les autres mots de passe soient modifiés ?') == 'non': ./python-pyeole/pyeole/ihm.py:def question_ouinon(question, interactive=True, default='non', ./python-pyeole/pyeole/ihm.py: raise ValueError(_(u'question_ouinon : default must be "yes" or "no"')) ./python-pyeole/pyeole/ihm.py: raise ValueError(_(u'question_ouinon : default must be "yes" or "no"')) ./python-pyeole/pyeole/ihm.py: raise ValueError(_(u'question_ouinon : level must be "info", "warn" or "err"')) ./scribe-backend/scripts/suppression_utilisateur.py: sup_rep = question_ouinon("Voulez-vous supprimer les répertoires personnels ?") == 'oui' ./scribe-backend/scripts/suppression_utilisateur.py: confirm = question_ouinon(msg.format(','.join(liste_users))) == 'oui' ./eole-annuaire/scripts/active_replication.py: elif question_ouinon("Utiliser le protole ldaps (port 636) pour la réplication", default='oui') == 'oui': ./eole-annuaire/scripts/active_replication.py:if question_ouinon("Répliquer également les groupes", 'non') == 'oui': ./eole-annuaire/scripts/active_replication.py:if question_ouinon("Ajouter des uid à exclure de la réplication", 'non') == 'oui': ./eole-common/sbin/gen_conteneurs: if ihm.question_ouinon(question) == 'oui':
Related issues
Associated revisions
Simplifier l’interprétation des réponses de l’utilisateur.
Ref #20982
Merge branch '2.6.2/20982-question_ouinon'
Rendre internationalisable la fonction de validation des actions (question_ouinon).
Ref #20982
Construire la liste des alternatives en s’assurant de l’ordre des éléments.
Ref #20982
Mettre à jour la traduction des invites de commandes.
Ref #20982
History
#1 Updated by Daniel Dehennin over 5 years ago
- Description updated (diff)
#2 Updated by Daniel Dehennin over 5 years ago
- Description updated (diff)
- Estimated time changed from 2.00 h to 6.00 h
- Remaining (hours) changed from 2.0 to 6.0
#3 Updated by Daniel Dehennin over 5 years ago
- Description updated (diff)
#4 Updated by Daniel Dehennin over 5 years ago
- Subject changed from L’utilitaire « question_oui_non » ne fonctionne pas en anglais to L’utilitaire « question_ouinon » ne fonctionne pas en anglais
#5 Updated by Daniel Dehennin over 5 years ago
- Parent task deleted (
#20669)
#6 Updated by Daniel Dehennin over 5 years ago
- Blocks Scénario #20669: Pouvoir transformer un VPS xenial en anglais en Eolebase added
#7 Updated by Scrum Master over 5 years ago
- Blocks deleted (Scénario #20669: Pouvoir transformer un VPS xenial en anglais en Eolebase)
#8 Updated by Scrum Master over 5 years ago
- Status changed from Nouveau to En cours
- Assigned To set to Benjamin Bohard
- Parent task set to #20669
#9 Updated by Benjamin Bohard over 5 years ago
- % Done changed from 0 to 80
- Remaining (hours) changed from 6.0 to 2.0
Test en anglais, français sur eolebase et en français sur sphynx (pour le postemplate 00-arv).
Pas de modification du script bash.
#10 Updated by Benjamin Bohard over 5 years ago
- Status changed from En cours to Résolu
#11 Updated by Daniel Dehennin over 5 years ago
- Description updated (diff)
- Remaining (hours) changed from 2.0 to 0.0
#12 Updated by Daniel Dehennin over 5 years ago
- % Done changed from 80 to 100
Cela fonctionne mieux après compilation du paquet creole qui contenait le code nécessaire.
#13 Updated by Scrum Master over 5 years ago
- Status changed from Résolu to Fermé
#14 Updated by Gérald Schwartzmann over 5 years ago
- Related to Scénario #21936: Réplication LDAP "manuelle" - le script active_replication.py devrait poser plus de questions - 2.6.2beta5 added
#15 Updated by Daniel Dehennin over 5 years ago
- Related to Scénario #21936: Réplication LDAP "manuelle" - le script active_replication.py devrait poser plus de questions - 2.6.2beta5 added
#16 Updated by Daniel Dehennin over 5 years ago
- Related to deleted (Scénario #21936: Réplication LDAP "manuelle" - le script active_replication.py devrait poser plus de questions - 2.6.2beta5)