agreg/book.py

135 lines
3.7 KiB
Python
Executable File

#! /usr/bin/env python
import xml.dom.minidom as md
import os
class Book():
""" Pour les bouquins
"""
def __init__(self, ):
""" Initialisation du bouquins
"""
self.infos = {"nom":None , "auth":None , "isbn": None}
self.dev=[]
self.lecon=[]
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 des infos sur le bouquin en question
for cle in self.infos.keys():
self.infos[cle] = self.document.getElementsByTagName('lecon')[0].getAttribute(cle)
# Extraction des lecons liées
for lecon in self.document.getElementsByTagName('lecon'):
self.lecon += [lecon.getAttribute("num")]
# Extraction des devloppements
for dev in self.document.getElementsByTagName('dev'):
self.dev += [dev.getAttribute("nom")] # Manque d'extraire la page qui le concerne
# print("Ce bouquin est utile dans les leçons ", self.lecon, "et pour les développements", self.dev)
def from_scratch(self, book = {"nom":None , "auth":None , "isbn": None}):
""" Créé le bouquin depuis rien
Arguments:
- `self`:
- `book`: sous la forme suivante {"nom":val , "auth": val , "isbn": val }
"""
self.infos = book
self.document=md.Document()
racine = self.document.createElement("book")
for cle in self.infos.keys():
racine.setAttribute(cle, self.infos[cle])
self.document.appendChild(racine)
# print(self.document.toprettyxml())
def add_lecon(self, lecon = 0):
""" Ajoute une lecon où apparait ce developpement
Arguments:
- `self`:
- `lecon`: le numero de la lecon
"""
self.lecon += [lecon]
element = self.document.createElement("lecon")
element.setAttribute("num", str(lecon))
racine = self.document.getElementsByTagName('book')[0]
racine.appendChild(element)
# print(self.document.toprettyxml())
def add_dev(self, dev = None, pg = None):
""" Ajoute une lecon où apparait ce developpement
Arguments:
- `self`:
- `dev`: le nom du developpement
- `pg`: page ou on peut le retrouver
"""
self.dev += [dev]
element = self.document.createElement("dev")
element.setAttribute("nom", str(dev))
element.setAttribute("pg", str(pg))
racine = self.document.getElementsByTagName('book')[0]
racine.appendChild(element)
# print(self.document.toprettyxml())
def sauve(self, destination = 0):
""" Sauve le developpement à l'endroit indiqué
Arguments:
- `self`:
- `destination`: là où on veut l'enregistrer
"""
if not destination:
destination = self.infos["nom"].replace(" ", "_") + ".agregBook"
fichier = open(destination, 'w')
fichier.write(self.document.toprettyxml())
fichier.close()
print("Le bouquin à été sauvé dans \"" + str(destination) + "\" voila son contenu")
print(self.document.toprettyxml())
if __name__ == '__main__':
book = Book()
# book.from_file("ici")
book.from_scratch( {"nom":"super book" , "auth": "super autheur" , "isbn": "super isbn" })
book.add_dev("j'aime les maths et les carottes rapées", 76)
book.add_lecon("123")
book.sauve()