241 lines
6.5 KiB
Python
Executable File
241 lines
6.5 KiB
Python
Executable File
#! /usr/bin/env python
|
|
|
|
|
|
import xml.dom.minidom as md
|
|
import os
|
|
import optparse
|
|
|
|
import lecon
|
|
import config
|
|
|
|
# --------------------------------------------------
|
|
#
|
|
# Classe des développements
|
|
#
|
|
# --------------------------------------------------
|
|
|
|
|
|
class Dev():
|
|
""" Pour les développements
|
|
"""
|
|
|
|
def __init__(self, ):
|
|
""" Initialisation du développement
|
|
"""
|
|
|
|
self.nom = None
|
|
self.book=[]
|
|
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 du nom du developpement
|
|
self.nom = self.document.getElementsByTagName('dev')[0].getAttribute("nom")
|
|
|
|
# des lecons
|
|
for lecon in self.document.getElementsByTagName('lecon'):
|
|
self.lecon += [lecon.getAttribute("num")]
|
|
|
|
# des bouquins
|
|
for book in self.document.getElementsByTagName('book'):
|
|
self.book += [book.getAttribute("nom") , book.getAttribute("auth") , book.getAttribute("isbn") , book.getAttribute("pg")]
|
|
|
|
|
|
# -------------------- Création et ajout d'information sur d'un développement
|
|
|
|
def from_scratch(self, nom = "???"):
|
|
""" Créé le développement depuis rien
|
|
|
|
Arguments:
|
|
- `self`:
|
|
- `nom` : nom du developpement
|
|
"""
|
|
self.nom = nom
|
|
|
|
self.document=md.Document()
|
|
racine = self.document.createElement("dev")
|
|
racine.setAttribute("nom", nom)
|
|
self.document.appendChild(racine)
|
|
|
|
# print(self.document.toprettyxml())
|
|
|
|
def add_book(self, book = ["nom", "auth", "isbn", "pg"] ):
|
|
""" Ajoute un bouquin en relation avec ce developpement
|
|
|
|
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('dev')[0]
|
|
racine.appendChild(element)
|
|
|
|
# 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('dev')[0]
|
|
racine.appendChild(element)
|
|
|
|
# print(self.document.toprettyxml())
|
|
|
|
|
|
# -------------------- Concernant le Prompt
|
|
|
|
def from_prompt(self):
|
|
""" Créé le développement depuis le prompt
|
|
|
|
Arguments:
|
|
"""
|
|
print("\n ---------- Nouveau développement ---------- ")
|
|
|
|
|
|
# On crée l'objet
|
|
d = Dev()
|
|
|
|
# Nom du developpement
|
|
self.prompt_desc_dev()
|
|
|
|
bo = 1
|
|
while bo:
|
|
self.prompt_add_book()
|
|
|
|
print("Un autre bouquin? (vide pour non, n'importe quoi pour oui!)")
|
|
bo = input()
|
|
|
|
self.prompt_add_lecon()
|
|
|
|
print("\n ---------- Voila fini! ----------\n ")
|
|
|
|
|
|
def prompt_desc_dev(self):
|
|
""" Pour demander la description du developpement
|
|
"""
|
|
print("Nom du developpement?")
|
|
nom = input()
|
|
self.from_scratch(nom)
|
|
|
|
|
|
def prompt_add_lecon(self):
|
|
""" Prompt pour demander la liste des leçons correspondantes
|
|
"""
|
|
print("\n ---------- Ajout de la liste des developpement ---------- ")
|
|
print("Liste des leçons liées? (séparé par un espace)")
|
|
list_lecons = input().split(" ")
|
|
|
|
for l in list_lecons:
|
|
self.add_lecon(l)
|
|
|
|
|
|
def prompt_add_book(self):
|
|
""" Prompt pour demander les infos sur un bouquin
|
|
"""
|
|
print("\n ---------- Ajout d'un bouquin ---------- ")
|
|
|
|
print("Nom du bouquin")
|
|
nom = input()
|
|
print("Autheur (tous on va pas s'embeter)")
|
|
auth = input()
|
|
print("Réference")
|
|
ref = input()
|
|
print("page")
|
|
pg = input()
|
|
|
|
self.add_book([nom , auth , ref , pg])
|
|
|
|
|
|
# -------------------- Affichage
|
|
|
|
def print_info(self):
|
|
""" Affiche les infos sur le dev
|
|
|
|
Arguments:
|
|
- `self`:
|
|
"""
|
|
print(" \n ---------- Informations sur :{nom} ".format(nom = self.nom))
|
|
print(" --- Leçons --- ")
|
|
for l in self.lecon:
|
|
lec = lecon.Lecon()
|
|
lec.from_scratch(l)
|
|
lec.print_nom()
|
|
|
|
# print(" --- Bouquins --- ")
|
|
|
|
|
|
# -------------------- Sauvegarde
|
|
|
|
def sauve(self, folder = ""):
|
|
""" Sauve le developpement à l'endroit indiqué
|
|
|
|
Arguments:
|
|
- `self`:
|
|
- `folder`: là où on veut l'enregistrer (et oui pas le choix du nom!!)
|
|
"""
|
|
destination = folder + self.nom.replace(" ", "_") + ".agregDev"
|
|
|
|
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__':
|
|
# dev = Dev()
|
|
# dev.from_file("/media/documents/Cours/Agreg/developpement/mes_dev/Lp_Banach")
|
|
# # dev.from_scratch("j'aime les maths et les carottes rappées")
|
|
# dev.add_book(("pipo", "popi", "chipo", "pouet"))
|
|
# dev.add_book(("pipoi", "popii", "chipoi", "poueti"))
|
|
# dev.add_lecon("123")
|
|
# dev.add_lecon("128")
|
|
# dev.add_lecon("122")
|
|
# dev.sauve()
|
|
|
|
|
|
# Pour analyser les options qu'on lui demande
|
|
parser = optparse.OptionParser()
|
|
|
|
# options proposée
|
|
parser.add_option("-n","--new",action="store_true",dest="new", help='Pour créer un nouveau développement')
|
|
#parser.add_option("-o","--output",action="store",type="string",dest="outputFilename")
|
|
|
|
# Digestion
|
|
(options, args) = parser.parse_args()
|
|
|
|
if options.new:
|
|
dev = Dev()
|
|
dev.from_prompt()
|
|
dev.sauve(config.lieu_dev)
|