Ejemplo n.º 1
0
	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)
Ejemplo n.º 2
0
    def gestion_corrections(self, contenu):
        gestionnaire = Gestionnaire()
        liste_des_corrections = gestionnaire.read(
            '../media/files/props_corrections')

        if self.verification_connexion():
            choix_prop = {}
            choix_prop['pseudo'] = contenu['pseudo']
            choix_prop['individu'] = contenu['individu']

            if len(liste_des_corrections) == 0:
                choix_prop[
                    'question'] = "Il n'y a pas de propositions à examiner."
            else:
                choix_prop[
                    "question"] = "Choisissez une proposition de correction.\nLe chemin indiqué est celui de l'emplacement du texte susceptible d'être modifié."

            choix_prop['options basiques'] = [['RETOUR', 'R'],
                                              ['QUITTER', 'Q']]
            choix_prop['options'] = liste_des_corrections

            choix_prop['actions'] = [
                lambda var, prop_cor=prop_cor: self._decider_correction(
                    contenu, prop_cor) for prop_cor in liste_des_corrections
            ]
            choix_prop['actions'].append(lambda var: Menu_Ouvert(contenu))
            choix_prop['actions'].append(self.quitter)

            return Menu_Ouvert(choix_prop)
        else:
            return Menu_Ouvert(contenu)
Ejemplo n.º 3
0
	def ajout_pays(self, contenu):
		"""Cette méthode permet d'ajouter un pays comme la précédente méthode ajout_section"""
		
		gestionnaire = Gestionnaire()
		donnees = Data_Base().donnees
		noms_indisponibles = [Pays(num_pays, donnees).get_name() for num_pays in range(len(donnees)) if Pays(num_pays, donnees).get_name()]
		
		if self.verification_connexion():
			nom_pays = input('\nEntrez le nom du pays à ajouter :\n> ')
			
			if nom_pays == 'none':
				input("\nVous ne pouvez pas nommer un pays 'none'.\nAppyez sur entrer pour continuer.")
				return self.afficher_pays(contenu)
			if nom_pays in noms_indisponibles:
				input('\nCe pays est déjà dans la liste.\nAppyez sur entrer pour continuer.')
				return self.afficher_pays(contenu)
			
			confirmation = input("\nConfirmation de l'ajout du pays (O/N) ?\n> ")
			if confirmation not in ["o","O"]:
				input("\nEchec de l'ajout du pays.\nAppyez sur entrer pour continuer.")
				return self.afficher_pays(contenu)
				
			donnees.append({})
			nouveau_pays = Pays(len(donnees)-1, donnees)
			nouveau_pays.set_name(nom_pays)
			nouveau_pays.set_infos_de_base()
			
			gestionnaire.update(nouveau_pays.donnees)
			input("\nLe pays a bien été ajouté.\nAppuyez sur entrer pour continuer.")

		return self.afficher_pays(contenu)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    def se_connecter(self, contenu):
        """Cette méthode permet à l'acteur de se connecter.
		L'individu entre son pseudo et son mot de passe. Il sera comparé au 
		gestionnaire des comptes."""

        gestionnaire = Gestionnaire()
        liste_des_comptes = gestionnaire.read(Compte().get_chemin_fichier())

        pseudo = input("\nEntrez votre pseudo : ")
        mot_de_passe = gp.getpass("Entrez votre mot de passe : ")

        for compte in liste_des_comptes:
            if self.statut == compte.get_statut(
            ) and pseudo == compte.get_pseudo(
            ) and mot_de_passe == compte.get_mot_de_passe():
                self.est_connecte = True
                del contenu['options'][0]
                del contenu['actions'][0]
                contenu['pseudo'] = pseudo
                print("\nVous êtes connecté !")
                input("Appuyez sur entrer pour continuer.")
                return Menu_Ouvert(contenu)

        print("\nVotre connexion a échouée.")
        input("Appuyez sur entrer pour continuer.")
        return Menu_Ouvert(contenu)
Ejemplo n.º 6
0
	def gestion_corrections(self, contenu):
		"""La gestion des corrections se fait par cette méthode. Elle affiche les
		différentes propositions que les autres acteurs ont suggérés. Le géographe n'a plus qu'à 
		choisir quelle correction il veut observer"""
		
		gestionnaire = Gestionnaire()
		liste_des_corrections = gestionnaire.read('../media/files/props_corrections')
		
		if self.verification_connexion():
			choix_prop = {}
			choix_prop['pseudo'] = contenu['pseudo']
			choix_prop['individu'] = contenu['individu']
			
			if len(liste_des_corrections) == 0:
				choix_prop['question'] = "Il n'y a pas de propositions à examiner."
			else : 
				choix_prop["question"] = "Choisissez une proposition de correction.\nLe chemin indiqué est celui de l'emplacement du texte susceptible d'être modifié."
				
			choix_prop['options basiques'] = [['RETOUR', 'R'], ['QUITTER', 'Q']]
			choix_prop['options'] = liste_des_corrections
			
			choix_prop['actions'] = [lambda var, prop_cor = prop_cor : self._decider_correction(contenu, prop_cor) for prop_cor in liste_des_corrections]
			choix_prop['actions'].append(lambda var : Menu_Ouvert(contenu))
			choix_prop['actions'].append(self.quitter)

			return Menu_Ouvert(choix_prop)
		else:
			return Menu_Ouvert(contenu)
Ejemplo n.º 7
0
	def correction(self, contenu, section_de_texte):
		""" La méthode correction prend en compte un contenu de menu et un texte.
		Elle permet la modification d'une information par un nouveau texte."""
		
		gestionnaire = Gestionnaire()
		chemin = section_de_texte.chemin
		
		if chemin[-1] == 'conventional short form' or chemin[-1] == 'conventional long form':
			input('\nVous ne pouvez pas modifier le nom du pays.\nAppuyez sur entrer pour continuer.')
		else:
			rep = input('\nVoulez vous modifier le texte (O/N) ?\n> ')
			if rep in ['o', 'O']:
				if self.verification_connexion():
					while True:
						txt_correction = input('\nEntrez le nouveau texte :\n> ')
						if len(txt_correction) >= 1:
							break
						print('\nVotre texte doit contenir au moins 1 caractère\n')
						
					section_de_texte.contenu['text'] = txt_correction
					
					confirmation = input('\nConfirmation de la modification #Cela écrasera le texte initial# (O/N) ?\n> ')
					if confirmation in ["o","O"]:
						gestionnaire.update(section_de_texte.donnees)
						input('\nVotre modification a bien été enregistrée.\nAppuyez sur entrer pour continuer.')
					else :
						input("\nVotre tentative de modification n'a pas abouti.\nAppuyez sur entrer pour continuer.")
Ejemplo n.º 8
0
    def correction(self, contenu, section):
        # Cette méthode permet de proposer une correction.
        # Elle prend en argument un contenu et ne renvoie rien.
        # L'utilisateur n'a qu'à entrer la proposition de
        # correction afin de l'enregistrer.

        chemin = section.chemin
        num_pays = section.num_pays

        if chemin[-1] == 'conventional short form' or chemin[
                -1] == 'conventional long form':
            input(
                '\nVous ne pouvez pas proposer de correction pour le nom du pays.\nAppuyez sur entrer pour continuer.'
            )
        else:
            rep = input('\nVoulez vous proposer une correction (O/N) ?\n> ')
            if rep in ['o', 'O']:
                while True:
                    txt_correction = input(
                        '\nEntrez la proposition de correction :\n> ')
                    if len(txt_correction) > 1:
                        break
                    print('\nVotre texte doit contenir au moins 1 caractère\n')

                prop_correction = Proposition_Correction(
                    txt_correction, num_pays, chemin)
                gestionnaire = Gestionnaire()
                gestionnaire.save_elm(prop_correction)

                continuer = input(
                    '\nVotre proposition de correction a bien été enregistrée.\nAppuyez sur entrer pour continuer.'
                )
Ejemplo n.º 9
0
    def _supprimer_compte(self, contenu):
        gestionnaire = Gestionnaire()
        liste_des_comptes = gestionnaire.read(Compte().get_chemin_fichier())
        liste_des_pseudos = [
            compte.get_pseudo() for compte in liste_des_comptes
        ]

        pseudo_compte_a_supprimer = input(
            '\nEntrez le pseudo du compte à supprimer\n> ')

        if pseudo_compte_a_supprimer not in liste_des_pseudos:
            input(
                "\nCe compte n'existe pas.\nAppuyez sur entrer pour continuer.\n"
            )
            return Menu_Ouvert(contenu)

        if pseudo_compte_a_supprimer != contenu['pseudo']:
            confirmation = input(
                '\nConfirmation de la suppression du compte (O/N) ?\n> ')
            if confirmation in ['o', 'O']:
                gestionnaire.suppr_elm(Compte(pseudo_compte_a_supprimer))
                input(
                    "\nLe compte de {} a bien été supprimé.\nAppuyez sur entrer pour continuer."
                    .format(pseudo_compte_a_supprimer))
            else:
                input(
                    "\nLa tentative de suppression de compte n'a pas abouti\nAppuyez sur entrer pour continuer.\n"
                )
        else:
            input(
                '\nVous ne pouvez pas supprimer votre propre compte.\nAppuyez sur entrer pour continuer.'
            )
        return Menu_Ouvert(contenu)
Ejemplo n.º 10
0
    def supprimer_pays(self, contenu):
        gestionnaire = Gestionnaire()
        donnees = Data_Base().donnees
        noms_pays = [
            Pays(num_pays, donnees).get_name()
            for num_pays in range(len(donnees))
        ]

        if self.verification_connexion():
            nom_pays_a_supprimer = input(
                '\nEntrez le nom du pays à supprimer\n> ')
            if nom_pays_a_supprimer not in noms_pays:
                input(
                    "\nCe pays n'existe pas.\nAppuyez sur entrer pour continuer."
                )
                return self.afficher_pays(contenu)
            else:
                num_pays_a_supprimer = noms_pays.index(nom_pays_a_supprimer)

            confirmation = input(
                "\nConfirmation de la suppression du pays (O/N) ? #Cela supprimera aussi toutes ses données#\n> "
            )
            if confirmation in ["o", "O"]:
                del donnees[num_pays_a_supprimer]
                gestionnaire.update(donnees)
                input(
                    "\nLe pays a bien été supprimée.\nAppuyez sur entrer pour continuer."
                )
            else:
                input(
                    "\nVotre tentative de suppression n'a pas abouti.\nAppuyez sur entrer pour continuer."
                )

        return self.afficher_pays(contenu)
Ejemplo n.º 11
0
	def ajout_section(self, contenu, section):
		"""Cette méthode permet de créer une nouvelle section dans un pays"""
		
		gestionnaire = Gestionnaire()
		noms_indisponibles = section.get_noms_sous_sections()
		
		if self.verification_connexion():
			while True:
				nom_section = input('\nEntrez le nom de la nouvelle section :\n> ')
				if len(nom_section) < 1 or len(nom_section) > 50:
					input('\nLe nom de la section doit contenir entre 1 et 50 caractères.\nAppuyez sur entrer pour continuer.')
					continue
				if nom_section in noms_indisponibles:
					input("\nCe nom est déjà celui d'une section existante, veuillez en choisir un autre.\nAppuyez sur entrer pour continuer.")
					continue
				if (nom_section == 'Government') or (nom_section == 'Country name') or (nom_section == 'conventional short form') or (nom_section == 'conventional long form') or (nom_section == 'text'):
					input('\nLa section ne peut pas porter de nom tel que Government, Country name, conventional short form, conventional long form ou text.\nAppuyez sur entrer pour continuer.')
					continue
				break
			
			confirmation = input('\nConfirmation de la création de la section (O/N) ?\n> ')
			if confirmation in ['o', 'O']:
				section.contenu[nom_section] = {}
				gestionnaire.update(section.donnees)
				input('\nLa nouvelle section a été ajoutée.\nAppuyez sur entrer pour continuer.')
			else :
				input("\nVotre tentative d'ajout de section n'a pas abouti.\nAppuyez sur entrer pour continuer.")
				
		return self.afficher_section(section, contenu)
Ejemplo n.º 12
0
	def _refuser_prop(self, prop_cor):
		"""Méthode qui effectue la suppression de la proposition de correction avec une double confirmation"""
		
		gestionnaire = Gestionnaire()
		confirmation = input("\nConfirmation du refus de la proposition (O/N) ? #Cela supprimera la proposition#\n> ")
		if confirmation in ['o', 'O']:
			gestionnaire.suppr_elm(prop_cor)
			input("\nLa proposition a été supprimée !\nAppuyez sur entrer pour continuer.")
		else :
			input("\nVotre tentative de refus n'a pas abouti.\nAppuyez sur entrer pour continuer.")
Ejemplo n.º 13
0
    def _afficher_liste_des_comptes(self, contenu):
        gestionnaire = Gestionnaire()
        liste_des_comptes = gestionnaire.read(Compte().get_chemin_fichier())

        print('\n--------------------------------')
        for compte in liste_des_comptes:
            print(compte)
            print('\n--------------------------------')
        input('\nAppuyez sur entrer pour continuer.')

        return Menu_Ouvert(contenu)
Ejemplo n.º 14
0
    def _creer_compte(self, contenu):
        """Cette méthode permet à l'administrateur de créer un nouveau compte.
		D'abord, il doit choisir le statut du nouveau acteur. Ensuite son pseudo et enfin son mot de passe.
		Une fois validé, le nouveau compte sera inséré dans le gestionnaire des comptes."""

        gestionnaire = Gestionnaire()
        liste_des_comptes = gestionnaire.read(Compte().get_chemin_fichier())
        liste_des_pseudos = [
            compte.get_pseudo() for compte in liste_des_comptes
        ]

        while True:
            type_de_compte = input(
                '\nVous voulez créer un compte Administrateur, Géographe ou Data Scientist (a/g/d) ? : '
            )
            if type_de_compte in ['a', 'g', 'd']:
                break
            print(
                '\nLa réponse attendue doit être : a pour Admin, g pour Géographe ou d pour Data Scientist.'
            )

        while True:
            pseudo = input('Entrez le pseudo : ')
            if len(pseudo) >= 2:
                if pseudo not in liste_des_pseudos:
                    break
                else:
                    print(
                        "\nCe pseudo est déjà attribué à quelqu'un, veuillez en choisir un autre.\n"
                    )
            else:
                print('\nVotre pseudo doit contenir au moins 2 caractères.\n')

        while True:
            while True:
                mot_de_passe = gp.getpass("Entrez le mot de passe : ")
                if len(mot_de_passe) >= 4:
                    break
                print(
                    "\nVotre mot de passe doit contenir au moins 4 caractères.\n"
                )
            mot_de_passe_confirmation = gp.getpass(
                "Confirmez le mot de passe : ")
            if mot_de_passe == mot_de_passe_confirmation:
                break
            print(
                "\nLa confirmation ne correspond pas au mot de passe initial.\n"
            )

        gestionnaire.save_elm(Compte(pseudo, mot_de_passe, type_de_compte))
        input(
            "\nLe compte a bien été enregistré.\nAppuyez sur entrer pour continuer."
        )
        return Menu_Ouvert(contenu)
Ejemplo n.º 15
0
    def _afficher_liste_des_comptes(self, contenu):
        """Cette méthode permet d'afficher la liste des différents comptes présents dans le gestionnaire"""

        gestionnaire = Gestionnaire()
        liste_des_comptes = gestionnaire.read(Compte().get_chemin_fichier())

        print('\n--------------------------------')
        for compte in liste_des_comptes:
            print(compte)
            print('\n--------------------------------')
        input('\nAppuyez sur entrer pour continuer.')

        return Menu_Ouvert(contenu)
Ejemplo n.º 16
0
    def supprimer_section(self, contenu, section):
        """Contrairement au géographe, l'administrateur est le seul à pouvoir supprimer un pays ou une section.
		Ici, cette méthode permet de supprimer une section d'un pays en question.
		Cependant, il ne peut pas supprimer certaines sections comme 'Government' ou 'Country name' car ils contiennent
		la liste des noms des pays."""

        gestionnaire = Gestionnaire()
        noms_sous_sections = section.get_noms_sous_sections()
        sections_non_supprimables = [
            'Government', 'Country name', 'conventional short form',
            'conventional long form'
        ]

        if self.verification_connexion():
            nom_section_a_supprimer = input(
                '\nEntrez le nom de la section à supprimer\n> ')
            if nom_section_a_supprimer not in noms_sous_sections:
                input(
                    "\nCette section n'existe pas.\nAppuyez sur entrer pour continuer."
                )
                return self.afficher_section(section, contenu)
            if nom_section_a_supprimer in sections_non_supprimables:
                input(
                    '\nVous ne pouvez pas supprimer cette section car elle est susceptible de contenir le nom du pays.\nAppuyez sur entrer pour continuer.'
                )
                return self.afficher_section(section, contenu)

            confirmation = input(
                '\nConfirmation de la suppression de la section (O/N) ? #Cela supprimera aussi toutes ses sous-sections#\n> '
            )
            if confirmation in ["o", "O"]:
                del section.contenu[nom_section_a_supprimer]
                gestionnaire.update(section.donnees)
                input(
                    '\nLa section a bien été supprimée.\nAppuyez sur entrer pour continuer.'
                )
            else:
                input(
                    "\nVotre tentative de suppression n'a pas abouti.\nAppuyez sur entrer pour continuer."
                )

        return self.afficher_section(section, contenu)
Ejemplo n.º 17
0
    def _supprimer_compte(self, contenu):
        """A l'inverse de la création d'un compte, cette méthode permet de supprimer un compte.
		L'administrateur n'a besoin que de choisir dans une liste des pseudos des comptes. Cela ne requiert pas le mot de passe
		de l'acteur en question. Une fois effectué, le compte sera supprimé du gestionnaire."""

        gestionnaire = Gestionnaire()
        liste_des_comptes = gestionnaire.read(Compte().get_chemin_fichier())
        liste_des_pseudos = [
            compte.get_pseudo() for compte in liste_des_comptes
        ]

        pseudo_compte_a_supprimer = input(
            '\nEntrez le pseudo du compte à supprimer\n> ')

        if pseudo_compte_a_supprimer not in liste_des_pseudos:
            input(
                "\nCe compte n'existe pas.\nAppuyez sur entrer pour continuer.\n"
            )
            return Menu_Ouvert(contenu)

        if pseudo_compte_a_supprimer != contenu['pseudo']:
            confirmation = input(
                '\nConfirmation de la suppression du compte (O/N) ?\n> ')
            if confirmation in ['o', 'O']:
                gestionnaire.suppr_elm(Compte(pseudo_compte_a_supprimer))
                input(
                    "\nLe compte de {} a bien été supprimé.\nAppuyez sur entrer pour continuer."
                    .format(pseudo_compte_a_supprimer))
            else:
                input(
                    "\nLa tentative de suppression de compte n'a pas abouti\nAppuyez sur entrer pour continuer.\n"
                )
        else:
            input(
                '\nVous ne pouvez pas supprimer votre propre compte.\nAppuyez sur entrer pour continuer.'
            )
        return Menu_Ouvert(contenu)
Ejemplo n.º 18
0
    def supprimer_section(self, contenu, section):
        gestionnaire = Gestionnaire()
        noms_sous_sections = section.get_noms_sous_sections()
        sections_non_supprimables = [
            'Government', 'Country name', 'conventional short form',
            'conventional long form'
        ]

        if self.verification_connexion():
            nom_section_a_supprimer = input(
                '\nEntrez le nom de la section à supprimer\n> ')
            if nom_section_a_supprimer not in noms_sous_sections:
                input(
                    "\nCette section n'existe pas.\nAppuyez sur entrer pour continuer."
                )
                return self.afficher_section(section, contenu)
            if nom_section_a_supprimer in sections_non_supprimables:
                input(
                    '\nVous ne pouvez pas supprimer cette section car elle est susceptible de contenir le nom du pays.\nAppuyez sur entrer pour continuer.'
                )
                return self.afficher_section(section, contenu)

            confirmation = input(
                '\nConfirmation de la suppression de la section (O/N) ? #Cela supprimera aussi toutes ses sous-sections#\n> '
            )
            if confirmation in ["o", "O"]:
                del section.contenu[nom_section_a_supprimer]
                gestionnaire.update(section.donnees)
                input(
                    '\nLa section a bien été supprimée.\nAppuyez sur entrer pour continuer.'
                )
            else:
                input(
                    "\nVotre tentative de suppression n'a pas abouti.\nAppuyez sur entrer pour continuer."
                )

        return self.afficher_section(section, contenu)
Ejemplo n.º 19
0
	def _valider_prop(self, prop_cor, section_du_texte):
		"""Méthode qui valide la proposition de correction. Elle va remplacer le texte par la proposition.
		Puis, elle va supprimer la proposition."""
		
		gestionnaire = Gestionnaire()
		confirmation = input("\nConfirmation de la validation du nouveau texte (O/N) ? #Cela supprimera l'ancien texte#\n> ")
		if confirmation in ['o', 'O']:
			section_du_texte.contenu['text'] = prop_cor.txt_prop
			gestionnaire.update(section_du_texte.donnees)
			gestionnaire.suppr_elm(prop_cor)
			input("\nLe texte a bien été modifié !\nAppuyez sur entrer pour continuer.")
		else :
			input("\nVotre tentative de validation n'a pas abouti.\nAppuyez sur entrer pour continuer.")