def test_recognized_username(self): """connexion() avec un nom utilisateurs reconnu""" username1 = "greg" username2 = "dax" list_users = pickle_get(students_arg=True)[0]["name_id_dict"].keys() self.assertEqual(True, (username1 in list_users)) self.assertEqual(True, (username2 in list_users))
def test_unknow_username(self): """connexion() avec un nom utilisateurs inconnu""" username1 = "prof1" username2 = "prof2" list_users = pickle_get(students_arg=True)[0]["name_id_dict"].keys() self.assertEqual(True, (username1 not in list_users)) self.assertEqual(True, (username2 not in list_users))
def login(self): """ PRE: POST: Lance tool.window si le nom utilisateur existe et que le mot de passe correspond. Un message d'erreur est affiché si l'utilisateur n'existe pas. """ try: list_users = pickle_get( students_arg=True)[0]["name_id_dict"].keys() if self.ids.Usrname.text in list_users: student_instance = pickle_get_instance(self.ids.Usrname.text, student=True) student_instance.verify_pwd(self.ids.Psw.text) ToolWindow.student_instance = student_instance EditorWindow.student_instance = student_instance else: raise UserNameNotFoundException except UnknownPasswordException: self.ids.displayLogin.text = "Mauvais mot de passe !" except UserNameNotFoundException: self.ids.displayLogin.text = "Mauvais nom d'utilisateur !" except Exception as e: self.ids.displayLogin.text = f"Erreur : {e}\n" else: self.ids.displayLogin.text = "Connexion en cours..." return True
def save_as(self): """ PRE: POST: Ouvre le navigateur de fichier apres avoir cliquer sur l'onglet enregistrer et sauvegarde le fichier a l endroit choisi. Si l' utilisateur quitte le navigateur de fichier, un message d'erreur est genere. """ try: self.pathname = filedialog.asksaveasfilename( defaultextension='.*', initialdir="/", title='Enregistrer sous', filetype=[("Text File", "*.txt"), ("Python File", "*.py")]) list_files = pickle_get(files_arg=True)[2]["name_id_dict"].keys() if self.pathname not in list_files: new_file(self.pathname, False, None, None, self.student_instance) f = open(self.pathname, 'w') s = self.ids.TextArea.text f.write(s) f.close() self.ids.displayEditor.text = "Le fichier '" + self.pathname.split( '/')[-1] self.ids.currentPathname.text = self.pathname.split('/')[-1] except FileNotFoundError: self.ids.displayEditor.text = "L'opération a été annulée" except Exception as e: self.ids.displayEditor.text = f"Erreur : {e}"
def open(self): """ PRE: POST: Ouvre un navigateur de fichier, puis après avoir choisis un fichier, implemente son contenu dans TextArea(textInput). """ try: self.pathname = filedialog.askopenfilename( initialdir="/", title="Choisir le fichier", filetype=[("Text File", "*.txt"), ("Python File", "*.py")]) list_files = pickle_get(files_arg=True)[2]["name_id_dict"].keys() if self.pathname not in list_files: new_file(self.pathname, False, None, None, self.student_instance) resultat = "" with open(self.pathname, 'r') as filin: lignes = filin.readlines() for ligne in lignes: resultat += ligne self.ids.TextArea.text = resultat self.ids.displayEditor.text = "Le fichier '" + self.pathname.split( '/')[-1] + "' a été ouvert" self.ids.currentPathname.text = self.pathname.split('/')[-1] except FileNotFoundError: self.ids.displayEditor.text = "L'opération a été annulée" except Exception as e: self.ids.displayEditor.text = f"Erreur : {e}"
def sort_on_course(self): """ PRE: POST: Affiche la liste des fichiers tries dans Affichage(Label) en fonction du cours defini dans Recherche(TextInput). Un message d'erreur est affiche si le cours n'est pas connu du programme. """ try: valid_course_name = False list_courses = pickle_get( courses_arg=True)[3]["name_id_dict"].keys() for x in list_courses: if self.ids.Research.text == x: valid_course_name = True if not valid_course_name: raise UnknownObjectException except UnknownObjectException: self.ids.displayTool.text = "Le cours entre n'existe pas." except Exception as e: self.ids.displayTool.text = f"Erreur : {e}\n" else: list_dict = list_sorted_files_on_course([self.ids.Research.text], self.student_instance) all_pathname = [] for x in list_dict: all_pathname.append(x["pathname"]) self.ids.displayTool.text = self.list_to_string(all_pathname)
def list(self): """ PRE: list_choice doit avoir la valeur "students", "courses" ou "files" POST: Affiche la liste des fichiers, des cours ou des utilisateurs recenses dans Affichage(Label) en fonction de la valeur de Recherche(TextInput). """ list_users = pickle_get(students_arg=True)[0]["name_id_dict"].keys() list_courses = pickle_get(courses_arg=True)[3]["name_id_dict"].keys() list_files = pickle_get(files_arg=True)[2]["name_id_dict"].keys() list_owned_files = [] for pathname in list_files: file_instance_id = pickle_get_instance(pathname, file=True).file_id if file_instance_id in self.student_instance.files: list_owned_files.append(pathname) if self.ids.objectList.text == 'les étudiants:': self.ids.displayTool.text = self.list_to_string(list_users) elif self.ids.objectList.text == 'les cours:': self.ids.displayTool.text = self.list_to_string(list_courses) elif self.ids.objectList.text == 'les fichiers:': self.ids.displayTool.text = self.list_to_string(list_owned_files) else: self.ids.displayTool.text = "Veuillez cliquer sur un des trois boutons pour définir la liste a afficher."