# -*- coding: iso-8859-1 -*- # Copyright 20003 - 2008: Julien Bourdaillet (julien.bourdaillet@lip6.fr), Jean-Gabriel Ganascia (jean-gabriel.ganascia@lip6.fr) # This file is part of MEDITE. # # MEDITE is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # MEDITE is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Foobar; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #---------------------------------------------------------------------------- # Nom: auteur.py # Objet: Classe qui regroupe les donnees d'un auteur #---------------------------------------------------------------------------- from oeuvre import * from Utile.exceptionsDonnees import * class Auteur: # Constucteur de la classe def __init__(self, pNom, pPrenom, pNais, pDeces, pOeuvres=[]): self.__nom = pNom self.__prenom = pPrenom self.__naissance = pNais self.__deces = pDeces self.__listeOeuvres = pOeuvres # Methodes d'acces aux attributs prives def getNom(self): return self.__nom def getPrenom(self): return self.__prenom def getNaissance(self): return self.__naissance def getDeces(self): return self.__deces def getListeOeuvres(self): return self.__listeOeuvres # Methode qui renvoie la liste des titres def getListeTitresOeuvres(self): listeO = [] for oeuvre in self.__listeOeuvres : listeO.append(oeuvre.getTitre()) return listeO # Methode qui renvoie la liste des dossiers genetique def getListeDGOeuvres(self): listeD = [] for oeuvre in self.__listeOeuvres : listeD.append(oeuvre.getNomDG()) return listeD # Methode qui renvoie vrai si l'oeuvre dont le titre est passee en parametre # est une des oeuvres de l'auteur def existeOeuvreByTitre(self, pTitre): for oeuvre in self.__listeOeuvres: if oeuvre.getTitre() == pTitre : return 1 ## VRAI return 0 ## FALSE # Methode qui retourne l'oeuvre dont le titre est passee en parametre # Une exception est lancee si ce n'est pas une oeuvre de l'auteur def getOeuvreByTitre(self, pTitre): for oeuvre in self.__listeOeuvres: if oeuvre.getTitre() == pTitre: return oeuvre # l'oeuvre n'a pas ete trouvee, lancement d'une exception raise OeuvreNonTrouvee('l\'oeuvre "'+pTitre+'" de "'+self.getNom()+'" n\'as pas ete trouvee') # Methode pour ajouter une oeuvre a la liste des oeuvres de l'auteur # Une exception est lancee si l'oeuvre a deja ete enregistree def addOeuvre(self, pOeuvre): try : # l'oeuvre existe deja dans la liste, lancement d'une exception oeuvre = self.getOeuvreByTitre(pOeuvre.getTitre()) raise OeuvreDejaExistante('l\'oeuvre "'+pOeuvre.getTitre()+'" est deja existante',oeuvre) except OeuvreNonTrouvee : self.__listeOeuvres.append(pOeuvre) # Methode pour supprimer une oeuvre de la liste des oeuvres de l'auteur # Cette methode attrappe l'exception OeuvreNonTrouvee, dans ce cas elle n'effectue rien def deleteOeuvreByTitre(self, pTitre): try : oeuvre = self.getOeuvreByTitre(pTitre) self.__listeOeuvres.remove(oeuvre) except OeuvreNonTrouvee : return # Methode de mise a jour des attributs d'un auteur # Seuls les attributs prenom, naissance et deces sont modifiables def modifyAuteur(self, pPrenom, pNais, pDeces): self.__prenom = pPrenom self.__naissance = pNais self.__deces = pDeces