#! /usr/bin/env python import xml.dom.minidom as md import os import config import divers # -------------------------------------------------- # # Classe leçon # # -------------------------------------------------- class Lecon(): """ Pour les lecons """ def __init__(self, ): """ Initialisation de la leçon """ self.nom = None self.book=[] self.dev=[] def from_file(self, file): """ Importe les informations depuis un fichier Arguments: - `self`: - `file`: fichier au format xml """ try: self.document=md.parse(file) except: print("Le fichier ", file , " est inconnu") else: self.file = file # Extraction du nom du developpement self.num = self.document.getElementsByTagName('lecon')[0].getAttribute("num") self.nom = self.document.getElementsByTagName('lecon')[0].getAttribute("nom") # Extraction des devloppements for dev in self.document.getElementsByTagName('dev'): self.dev += [dev.getAttribute("nom")] # des bouquins for book in self.document.getElementsByTagName('book'): self.book += [book.getAttribute("nom")] # print("Dans cette lecon on peut faire les développement ", self.dev, " et on aura de besoin des bouquins ", self.book) def from_scratch(self, num = '101'): """ Créé la lecon depuis rien Arguments: - `self`: - `num` : numero de la lecon """ self.num = str(num) if self.num in divers.dico_nom_lecon: self.nom = divers.dico_nom_lecon[self.num] self.document=md.Document() racine = self.document.createElement("lecon") racine.setAttribute("num", self.num) racine.setAttribute("nom", self.nom) self.document.appendChild(racine) else: print("{num} est un numero de lecon inconnu".format(num = self.num)) # print(self.document.toprettyxml()) def add_book(self, book = ["nom", "auth", "isbn", "pg"] ): """ Bouquin associé à la lecon Arguments: - `self`: - `book`: sous la forme suivante ["nom", "auth", "isbn", "pg"] """ self.book += book element = self.document.createElement("book") element.setAttribute("nom", book[0]) element.setAttribute("auth", book[1]) element.setAttribute("isbn", book[2]) element.setAttribute("pg", book[3]) racine = self.document.getElementsByTagName('lecon')[0] racine.appendChild(element) # print(self.document.toprettyxml()) def add_dev(self, dev = None): """ developpement associé à la lecon Arguments: - `self`: - `dev`: le nom du developpement """ self.dev += [dev] element = self.document.createElement("dev") element.setAttribute("nom", str(dev)) racine = self.document.getElementsByTagName('lecon')[0] racine.appendChild(element) # print(self.document.toprettyxml()) def print_nom(self): """ Affiche le nom et le numero de la lecon Arguments: - `self`: """ print("{num} : {nom} ".format(num = self.num , nom = self.nom)) def print_nbr_dev(self): """ Affiche le nombre de développement lié à la lecon Arguments: - `self`: """ print("{nbr} --- {num} : {nom} ".format(num = self.num , nom = self.nom , nbr = len(self.dev))) def print_dev(self): """ Affiche les developpements qui lui sont associés Arguments: - `self`: """ print(" \n ---------- Développements de la lecon {num}: {nom} ---------- \n".format(num = self.num , nom = self.nom)) for d in self.dev: print(d) def sauve(self, destination = 0): """ Sauve le developpement à l'endroit indiqué Arguments: - `self`: - `destination`: là où on veut l'enregistrer """ if not destination: nom_mod = self.nom.replace(" ", "_") nom_mod = nom_mod.replace(".", "") destination = "{num}-{nom}.agregLecon".format(num = self.num , nom = nom_mod) fichier = open(destination, 'w') fichier.write(self.document.toprettyxml()) fichier.close() print("Le développement à été sauvé dans \"", destination, "\" voila son contenu") print(self.document.toprettyxml()) if __name__ == '__main__': lecon = Lecon() # lecon.from_file("j'aime_les_maths_et_les_carottes_rappées.agregLecon") lecon.from_scratch(103) lecon.add_book(("pipo", "popi", "chipo", "pouet")) lecon.add_book(("pipoi", "popii", "chipoi", "poueti")) lecon.add_dev() lecon.add_dev("Chouette") lecon.sauve()