agreg/lecon.py

187 lines
5.0 KiB
Python
Executable File

#! /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()