Package medite :: Package Donnees :: Module donnees
[hide private]
[frames] | no frames]

Source Code for Module medite.Donnees.donnees

  1  # -*- coding: iso-8859-1 -*- 
  2  # Copyright 20003 - 2008: Julien Bourdaillet (julien.bourdaillet@lip6.fr), Jean-Gabriel Ganascia (jean-gabriel.ganascia@lip6.fr) 
  3  # This file is part of MEDITE. 
  4  # 
  5  #    MEDITE is free software; you can redistribute it and/or modify 
  6  #    it under the terms of the GNU General Public License as published by 
  7  #    the Free Software Foundation; either version 2 of the License, or 
  8  #    (at your option) any later version. 
  9  # 
 10  #    MEDITE is distributed in the hope that it will be useful, 
 11  #    but WITHOUT ANY WARRANTY; without even the implied warranty of 
 12  #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 13  #    GNU General Public License for more details. 
 14  # 
 15  #    You should have received a copy of the GNU General Public License 
 16  #    along with Foobar; if not, write to the Free Software 
 17  #    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
 18  #---------------------------------------------------------------------------- 
 19  # Nom:          donnees.py 
 20  # Objet:        Classe qui accede au donnees concernant les auteurs 
 21  #---------------------------------------------------------------------------- 
 22   
 23  from Utile.constantesDonnees import * 
 24  from Utile.exceptionsDonnees import * 
 25  from auteur import * 
 26  from oeuvre import * 
 27  from arbre import * 
 28  import shelve  
 29   
30 -class Donnees:
31 # Methode qui renvoie vrai si l'auteur existe dans notre fichier de donnees
32 - def __existeAuteurByNom(self, pNom):
33 listeAuteurs = shelve.open(NOSDONNEES) # Donne la liste des auteurs 34 existe = listeAuteurs.has_key(str(pNom)) 35 listeAuteurs.close() 36 return existe
37 38 39 # Methode qui retourne l'auteur dont le nom est passe en parametre 40 # Une exception est lancee si l'auteur n'existe pas
41 - def getAuteurByNom(self,pNom):
42 ## print 'dans Donnees.getAuteurByNom' 43 if self.__existeAuteurByNom(pNom): 44 listeAuteurs = shelve.open(NOSDONNEES) 45 auteur = listeAuteurs[str(pNom)] 46 listeAuteurs.close() 47 return auteur 48 else : 49 raise AuteurNonTrouve('l\'auteur "'+pNom+'" n\'a pas ete trouve')
50 51 # Methode pour ajouter un auteur dans notre fichier de donnees 52 # Une exception est lancee si l'auteur est deja enregistre
53 - def addAuteur(self, pAuteur):
54 ## print 'dans Donnees.addAuteur' 55 try : 56 auteur = self.getAuteurByNom(str(pAuteur.getNom())) 57 raise AuteurDejaExistant('l\'auteur "'+pAuteur.getNom()+'" est deja existant',auteur) 58 except AuteurNonTrouve : 59 listeAuteurs = shelve.open(NOSDONNEES) 60 listeAuteurs[str(pAuteur.getNom())]= pAuteur 61 listeAuteurs.close()
62 63 64 # Methode pour supprimer un auteur de notre fichier de donnees 65 # Une exception est lancee, si l'auteur n'existe pas
66 - def deleteAuteur(self, pNom):
67 # print 'dans Donnees.deleteAuteur' 68 try: 69 listeAuteurs = shelve.open(NOSDONNEES) 70 del listeAuteurs[str(pNom)] 71 listeAuteurs.close() 72 except KeyError: 73 raise AuteurNonTrouve('l\'auteur "'+pNom+'" n\'a pas ete trouve')
74 75 # Methode de mise a jour d'un auteur
76 - def updateAuteur(self, pAuteur):
77 ## print 'dans Donnees.updateAuteur' 78 auteur = self.getAuteurByNom(pAuteur.getNom()) 79 auteur.modifyAuteur(pAuteur.getPrenom(), pAuteur.getNaissance(), pAuteur.getDeces()) 80 self.deleteAuteur(pAuteur.getNom()) 81 self.addAuteur(auteur)
82 83 # Methode qui renvoie la liste des noms des auteurs
84 - def getListeNomsAuteurs(self):
85 ## print 'dans Donnees.getListeNomsAuteurs' 86 listeAuteurs = shelve.open(NOSDONNEES) 87 l=listeAuteurs.keys() 88 listeAuteurs.close() 89 return l
90 91 # Methode qui renvoie la liste des titres des oeuvres d'un auteur
92 - def getListeTitresByAuteur(self, pNom):
93 ## print 'dans Donnees.getListeTitresByAuteur' 94 auteur = self.getAuteurByNom(pNom) 95 return auteur.getListeTitresOeuvres()
96 97 # Methode qui renvoie la liste des noms des dossiers genetiques des oeuvres d'un auteur
98 - def getListeDGByAuteur(self, pNom):
99 ## print 'dans Donnees.getListeDGByAuteur' 100 auteur = self.getAuteurByNom(pNom) 101 return auteur.getListeDGOeuvres()
102 103 # Methode qui ajoute une oeuvre a un auteur 104 # Une exception est lancee si l'oeuvre est deja existante
105 - def addOeuvre(self, pNom, pOeuvre):
106 ## print 'dans Donnees.addOeuvre' 107 try : 108 auteur = self.getAuteurByNom(pNom) 109 oeuvre = auteur.getOeuvreByTitre(pOeuvre.getTitre()) 110 # Si l'oeuvre existe, on lance une exception 111 raise OeuvreDejaExistante('l\'oeuvre "'+pOeuvre.getTitre()+'"de "'+pNom+'" est deja enregistree',oeuvre) 112 except OeuvreNonTrouvee: 113 auteur.addOeuvre(pOeuvre) 114 self.deleteAuteur(pNom) 115 self.addAuteur(auteur)
116 117 # Methode pour supprimer une oeuvre d'un auteur
118 - def deleteOeuvre(self, pNom, pTitre):
119 ## print 'dans Donnees.deleteOeuvre' 120 auteur = self.getAuteurByNom(pNom) 121 if auteur.existeOeuvreByTitre(pTitre): 122 auteur.deleteOeuvreByTitre(pTitre) 123 self.deleteAuteur(pNom) 124 self.addAuteur(auteur)
125 126 # Methode qui met a jour l'oeuvre d'un auteur
127 - def updateOeuvre(self, pNom, pOeuvre):
128 ## print 'dans Donnees.updateOeuvre' 129 auteur = self.getAuteurByNom(pNom) 130 #oeuvre = auteur.getOeuvreByTitre(pOeuvre.getTitre()) 131 auteur.deleteOeuvreByTitre(pOeuvre.getTitre()) 132 #oeuvre.modifyOeuvre(pOeuvre.getEdition(), pOeuvre.getPublication()) 133 auteur.addOeuvre(pOeuvre) 134 self.deleteAuteur(pNom) 135 self.addAuteur(auteur)
136 137 138 # Methode qui retourne le nom du dossier genetique de l'oeuvre passee en parametre
139 - def getNomDG(self, pNom, pTitre):
140 ## print 'dans Donnees.getNomDG' 141 auteur = self.getAuteurByNom(pNom) 142 oeuvre = auteur.getOeuvreByTitre(pTitre) 143 return oeuvre.getNomDG()
144