def afficher_section(self, section, contenu): donnees = Data_Base().donnees num_pays = section.num_pays chemin = section.chemin choix_section = {} chemin_a_afficher = Pays(section.num_pays, donnees).get_name() for partie in chemin: chemin_a_afficher += ' -> {}'.format(partie) if section.is_section_de_texte(): print('\n{} :\n'.format(chemin_a_afficher)) print(section.contenu['text']) self.correction(choix_section, section) return self.afficher_section(Section(num_pays, donnees, chemin[:-1]), contenu) sous_sections = section.get_noms_sous_sections() if len(sous_sections) == 0: choix_section['question'] = '{}\n\nCette section est vide.'.format(chemin_a_afficher) else : choix_section['question'] = '{}\n\nChoisissez une option.'.format(chemin_a_afficher) choix_section['individu'] = contenu['individu'] choix_section['options'] = sous_sections choix_section['options basiques'] = [] choix_section['actions'] = [] for partie in sous_sections: nouveau_chemin = chemin + [partie] choix_section['actions'].append((lambda contenu, nouveau_chemin=nouveau_chemin : self.afficher_section(Section(num_pays, donnees, nouveau_chemin), contenu))) if self.statut == 'g' or self.statut == 'a': if len(sous_sections) == 0: choix_section['options basiques'].append(['AJOUTER UN TEXTE', 'AT']) choix_section['actions'].append(lambda var : self.ajout_texte(contenu, section)) choix_section['options basiques'].append(['AJOUTER UNE SECTION', 'AS']) choix_section['actions'].append(lambda var : self.ajout_section(contenu, section)) if self.statut == 'a' and len(sous_sections) != 0: choix_section['options basiques'].append(['SUPPRIMER UNE SECTION', 'S']) choix_section['actions'].append(lambda var : self.supprimer_section(contenu, section)) choix_section['options basiques'].append(['RETOUR', 'R']) if len(chemin) == 0: choix_section['actions'].append(lambda var : self.afficher_pays(contenu)) else: choix_section['actions'].append(lambda var : self.afficher_section(Section(num_pays, donnees, chemin[:-1]), contenu)) choix_section['options basiques'].append(["RETOUR AU MENU DE L'ACTEUR", 'RMA']) choix_section['actions'].append(lambda contenu : Menu_Ouvert(self.contenu_initial)) choix_section['options basiques'].append(['QUITTER', 'Q']) choix_section['actions'].append(self.quitter) return Menu_Ouvert(choix_section)
def test_is_section_de_texte(self): #Assume donnees = self.data_base #Action section = Section(0, donnees, ['Introduction', 'Background']) is_section_de_texte = section.is_section_de_texte() expected_results = True #Assert self.assertEqual(is_section_de_texte, expected_results)
def test_get_noms_sous_sections(self): #Assume donnees = self.data_base #Action section = Section(0, donnees) liste_des_sous_sections = section.get_noms_sous_sections() expected_results = ['Introduction', 'Government'] #Assert self.assertEqual(liste_des_sous_sections, expected_results)
def _decider_correction(self, contenu, prop_cor): """Cette méthode permet au géographe de choisir entre valider ou refuser une proposition de correction.""" donnees = Data_Base().donnees gestionnaire = Gestionnaire() try : section_du_texte = Section(prop_cor.num_pays, donnees, prop_cor.chemin_prop) except : input('\nIl semble que la donnée initiale a été supprimée. Cette proposition va alors être supprimée.\nAppuyez sur entrer pour continuer') gestionnaire.suppr_elm(prop_cor) return self.gestion_corrections(contenu) print("\nTexte actuel :\n") print(section_du_texte.contenu["text"] + "\n") print("Proposition de correction :\n") print(prop_cor.txt_prop + "\n") while True: validation = input("Voulez-vous valider cette proposition de correction (V : valider / R : refuser / P : aucune action) ?\n> ") if validation in ["v","V","r","R","p","P"]: break else : input("\nVotre réponse doit être V, R ou P.\nAppyez sur entrer pour continuer.\n") if validation in ['v', 'V']: self._valider_prop(prop_cor, section_du_texte) if validation in ['r', 'R']: self._refuser_prop(prop_cor) return self.gestion_corrections(contenu)
def ajout_texte(self, contenu, section): gestionnaire = Gestionnaire() section_mere = Section(section.num_pays, section.donnees, section.chemin[:-1]) if self.verification_connexion(): while True: texte = input('\nEntrez le texte à ajouter :\n> ') if len(texte) <= 1: input( '\nLe nom de la section doit contenir au moins 1 caractère.\nAppuyez sur entrer pour continuer.' ) continue break confirmation = input( "\nConfirmation de l'ajout du texte (O/N) ?\n> ") if confirmation in ['o', 'O']: section.contenu['text'] = texte gestionnaire.update(section.donnees) input( '\nLe texte a bien été ajouté.\nAppuyez sur entrer pour continuer.' ) return self.afficher_section(section_mere, contenu) else: input( "\nVotre tentative d'ajout de texte n'a pas abouti.\nAppuyez sur entrer pour continuer." ) return self.afficher_section(section, contenu)
def afficher_pays(self, contenu): """ Cette méthode permet au consultant d'afficher la liste des différents pays et d'en choisir un par le nombre correspondant au pays affiché dans le menu""" if self.contenu_initial == {}: self.contenu_initial = contenu donnees = Data_Base().donnees nb_pays = len(donnees) choix_pays = {} choix_pays['question'] = 'Choisissez un pays.' choix_pays['individu'] = contenu['individu'] liste_des_pays = [] for num_pays in range(nb_pays): nom_pays = Pays(num_pays, donnees).get_name() if nom_pays: liste_des_pays.append((nom_pays, num_pays)) liste_des_pays.sort() liste_des_noms = [pays[0] for pays in liste_des_pays] liste_des_nums = [pays[1] for pays in liste_des_pays] choix_pays['options'] = liste_des_noms choix_pays['options basiques'] = [] choix_pays['actions'] = [ lambda var, num=num: self.afficher_section(Section( num, donnees), contenu) for num in liste_des_nums ] if self.statut == 'g' or self.statut == 'a': choix_pays['options basiques'].append(['AJOUTER UN PAYS', 'A']) choix_pays['actions'].append(lambda var: self.ajout_pays(contenu)) if self.statut == 'a': choix_pays['options basiques'].append(['SUPPRIMER UN PAYS', 'S']) choix_pays['actions'].append( lambda var: self.supprimer_pays(contenu)) choix_pays['options basiques'].append( ["RETOUR AU MENU DE L'ACTEUR", 'R']) choix_pays['actions'].append( lambda var: Menu_Ouvert(self.contenu_initial)) choix_pays['options basiques'].append(['QUITTER', 'Q']) choix_pays['actions'].append(self.quitter) return Menu_Ouvert(choix_pays)