1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import shelve,os,os.path,shutil,dircache
20 import Utile.constantesDonnees, Utile.exceptionsDonnees
21 import FInfoManager
22 from Utile.exceptionsDonnees import *
23
26 """ Renvoie le dossier associé à un auteur
27 pre: isinstance(nomAuteur,str) """
28 return os.path.join(Utile.constantesDonnees.DG_REP, nomAuteur)
33 - def getDG(self,nomAuteur,nomOeuvre):
34 """ Renvoie le DG associé à un auteur et une oeuvre
35 pre: isinstance(nomAuteur,str) and isinstance(nomOeuvre,str)"""
36 return os.path.join(self.getDirAuteur(nomAuteur),nomOeuvre)
38 """ Vrai si l'auteur existe
39 pre: isinstance(nomAuteur,str)
40 post: isinstance(__return__,bool) """
41 lAuteurs = os.listdir(Utile.constantesDonnees.DG_REP)
42 if nomAuteur in lAuteurs: return True
43 else: return False
58 """ Supprime un dossier nomAuteur
59 pre: isinstance(nomAuteur,str) """
60 dirAuteur = self.getDirAuteur(nomAuteur)
61 if os.path.isdir(dirAuteur):
62 self.recDelFolder(dirAuteur)
64 """ Renvoie l'objet Auteur associé à nomAuteur ou en crée si il n'existe pas
65 pre: isinstance(nomAuteur,str)
66 post: isinstance(__return__,Auteur)"""
67 fileAuteur = self.getFileAuteur(nomAuteur)
68 if os.path.isfile(fileAuteur):
69 dicAuteur = shelve.open(fileAuteur)
70 auteur = dicAuteur[Utile.constantesDonnees.DG_AUTEUR_CLE]
71 dicAuteur.close()
72 else: auteur = Auteur(nomAuteur)
73 return auteur
75 """ Renvoie une liste des noms des dossiers auteurs
76 post: isinstance(__return__,list) """
77 dirAuteurs = self.getDirAuteur("")
78 ld = dircache.listdir(dirAuteurs)
79 ld = filter(lambda x: x != "CVS" and x!= Utile.constantesDonnees.DG_AUTEUR_FILE, ld)
80 return ld
81
91
93 """ Supprime un DG
94 pre: isinstance(nomAuteur,str) and isinstance(nomOeuvre,str) """
95 nomDG = self.getDG(nomAuteur,nomOeuvre)
96 if os.path.isdir(nomDG):
97 self.recDelFolder(nomDG)
99 """ Renvoie une liste des oeuvres d'un auteur
100 pre: isinstance(nomAuteur,str)
101 post: isinstance(__return__,list) """
102 dirAuteur = self.getDirAuteur(nomAuteur)
103 ld = dircache.listdir(dirAuteur)
104 ld = filter(lambda x: x != "CVS" and x!='.cvsignore' and x!= Utile.constantesDonnees.DG_AUTEUR_FILE, ld)
105 return ld
106
107
108 - def loadDG(self,nomAuteur,nomOeuvre):
110
111 - def addVersion(self,nomAuteur,nomOeuvre,nomVersion):
112 """ Crée une version
113 pre: isinstance(nomAuteur,str) and isinstance(nomOeuvre,str) and isinstance(nomVersion,str)"""
114 nomDG = self.getDG(nomAuteur,nomOeuvre)
115 dirVersion = os.path.join(nomDG,nomVersion)
116 if not os.path.isdir(dirVersion):
117 os.mkdir(dirVersion)
118 fim = FInfoManager.FInfoManager(Auteur(nomAuteur),Oeuvre(nomOeuvre))
119 fim.creerVersion(nomVersion)
120 - def delVersion(self,nomAuteur,nomOeuvre,nomVersion):
121 """ Supprime une version
122 pre: isinstance(nomAuteur,str) and isinstance(nomOeuvre,str) and isinstance(nomVersion,str)"""
123 nomDG = self.getDG(nomAuteur,nomOeuvre)
124 dirVersion = os.path.join(nomDG,nomVersion)
125 if os.path.isdir(dirVersion):
126 self.recDelFolder(dirVersion)
127 fim = FInfoManager.FInfoManager(Auteur(nomAuteur),Oeuvre(nomOeuvre))
128 fim.supprimerVersion(nomVersion)
129
130 - def addEtat(self,nomAuteur,nomOeuvre,nomVersion,fileEtat,etatPere=""):
131 """ Ajoute un état à partir du fichier fileEtat dans la version nomVersion
132 et ayant éventellement un etatPere
133 pre: isinstance(nomAuteur,str) and isinstance(nomOeuvre,str) and \
134 isinstance(nomVersion,str) and isinstance(fileEtat,str) and isinstance(etatPere,str)"""
135 (filepath, nomEtat) = os.path.split(fileEtat)
136 nomDG = self.getDG(nomAuteur,nomOeuvre)
137 dirVersion = os.path.join(nomDG,nomVersion)
138 cheminEtat=os.path.join(dirVersion,nomEtat)
139 self.__copieFichier(fileEtat,cheminEtat)
140 fim = FInfoManager.FInfoManager(Auteur(nomAuteur),Oeuvre(nomOeuvre))
141 fim.creerEtat(nomVersion, nomEtat, etatPere)
142
143 - def delEtat(self,nomAuteur,nomOeuvre,nomVersion,nomEtat):
144 """ Supprime un état
145 pre: isinstance(nomAuteur,str) and isinstance(nomOeuvre,str) and \
146 isinstance(nomVersion,str) and isinstance(nomEtat,str) """
147 fim = FInfoManager.FInfoManager(Auteur(nomAuteur),Oeuvre(nomOeuvre))
148 lEtatsFils = fim.getListeEtatsFils(nomVersion,nomEtat)
149 nomDG = self.getDG(nomAuteur,nomOeuvre)
150 dirVersion = os.path.join(nomDG,nomVersion)
151 cheminEtat=os.path.join(dirVersion,nomEtat)
152 self.recDelFolder(cheminEtat)
153 if lEtatsFils != None and lEtatsFils != []:
154 for etatFils in lEtatsFils:
155 cheminEtat=os.path.join(dirVersion,etatFils)
156 self.recDelFolder(cheminEtat)
157 fim.supprimerEtat(nomVersion, nomEtat)
158
160 """ Renvoie une liste des versions d'un DG
161 pre: isinstance(nomAuteur,str) and isinstance(nomOeuvre,str)
162 post: isinstance(__return__,list) """
163 nomDG = self.getDG(nomAuteur,nomOeuvre)
164 ld = dircache.listdir(nomDG)
165 ld = filter(lambda x: x != "CVS" and x != '.cvsignore' and x!= Utile.constantesDonnees.DG_FILE_INFO, ld)
166 return ld
168 """ Renvoie une liste des etats d'une version
169 pre: isinstance(nomAuteur,str) and isinstance(nomOeuvre,str) and isinstance(nomVersion,str)
170 post: isinstance(__return__,list) """
171 nomDG = self.getDG(nomAuteur,nomOeuvre)
172 path = os.path.join(nomDG,nomVersion)
173
174 ld = dircache.listdir(path)
175 ld = filter(lambda x: x != "CVS" and x != '.cvsignore', ld)
176 return ld
177
179 """ Methode privee qui sert a la copie d'un fichier """
180 if os.path.isfile(pDestinataire):
181 raise Utile.exceptionsDonnees.FichierExistant(pSource,pDestinataire)
182 else: shutil.copyfile(pSource,pDestinataire)
183
184 - def importTextFolder(self,nomAuteur,nomOeuvre,textFolder):
185 """ Importe un répertoire d'états
186 pre: isinstance(nomAuteur,str) and isinstance(nomOeuvre,str) and isinstance(textFolder,str) """
187 (filepath, nomVersion) = os.path.split(textFolder)
188
189 self.addVersion(nomAuteur,nomOeuvre,nomVersion)
190 for fichier in os.listdir(textFolder):
191 if os.path.isfile(os.path.join(textFolder,fichier)):
192 self.addEtat(nomAuteur,nomOeuvre,nomVersion,os.path.join(textFolder,fichier))
193
194 - def getEtatPath(self,nomAuteur,nomOeuvre,nomVersion,nomEtat):
195 """ Renvoie le fichier associé à un état
196 pre: isinstance(nomAuteur,str) and isinstance(nomOeuvre,str) and \
197 isinstance(nomVersion,str) and isinstance(nomEtat,str)
198 post: isinstance(__return__,str) """
199 nomDG = self.getDG(nomAuteur,nomOeuvre)
200 dirVersion = os.path.join(nomDG,nomVersion)
201 cheminEtat = os.path.join(dirVersion,nomEtat)
202 return cheminEtat
203
205 """Efface récursivement un dossier et tout ce qu'il contient
206 pre: isinstance(folder,str) or isinstance(folder,unicode) """
207 if os.path.isdir(folder):
208 liste = os.listdir(folder)
209 for i in liste :
210 self.recDelFolder(os.path.join(folder,i))
211 os.rmdir(folder)
212 else:
213 os.remove(folder)
214
216 - def __init__(self, pNom, pPrenom="", pNais="", pDeces=""):
217 self.__nom = pNom
218 self.__prenom = pPrenom
219 self.__naissance = pNais
220 self.__deces = pDeces
226 return self.__naissance
233
235 - def __init__(self, pTitre, pEdition="", pPublication=""):
236 self.__titre = pTitre
237 self.__edition = pEdition
238 self.__publication = pPublication
242 return self.__edition
244 return self.__publication
245