예제 #1
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)
예제 #2
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)
예제 #3
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)
예제 #4
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)
예제 #5
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)
예제 #6
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)
예제 #7
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)
예제 #8
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)