135 lines
3.7 KiB
Python
Executable File
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()
|
|
|