-
- ISBNvide = -1
- def ISBN(isbn):
- """Pour ajouter de facon transparent les ISBN
- Qui sont deux types differents:
- ISBN-10 ==> Ancienne Version
- ISBN-13 et EAN-13 (CodeBarre) ==> Nouvelle Version"""
- #Changement de representation au cas ou...
- try:
- isbn = str(isbn)
- except:
- "ISBN : Mauvaise forme...."
- else:
- #Traitement de toutes les variates d'ecriture....
- isbn = isbn.replace("-","")
- isbn = isbn.replace(".","")
- #Le choix entre les ISBN
- if len(isbn)==10:
- return __IsbnPourDix(isbn)
- elif len(isbn)==13:
- return __IsbnPourTreize(isbn)
- else:
- print "ISBN n'a pas ete reconnue"
- return -1 #FIXME: Houlala verifier ca
-
- def conversionEANetISBN13enISBN10(isbn):
- """Pour cette fonction il nous faut de l'isbn en texte ou en int"""
- try:
- isbn = str(isbn)
- except:
- "ISBN : Mauvaise forme...."
- else:
- if len(isbn)==13:
- #Traitement de toutes les variates d'ecriture....
- isbn = isbn.replace("-","")
- isbn = isbn.replace(".","")
- #On retire ce qui est devant et la cle
- isbn = isbn[3:-1]
- return __convertISBN10(isbn)
- else:
- print "Appel conversion EAN 13 ou ISBN 13 mais ISBN de longueur non egal a 13"
-
- class __IsbnPourDix:
- #Constantes de la classe
- ISBNvide = -1
-
- def __init__(self,isbn):
- "prend un isbn de forme string"
- self.__isbn = self.__traitementISBN(isbn)
-
- def __del__(self):
- del(self)
-
- def __len__(self):
- return len(str(self.__isbn))
-
- def __str__(self):
- if (self.testISBNvide(self.__isbn)):
- return "*ISBN vide*"
- else:
- tmp = str(self.__isbn)
- if len(tmp)==10:
- return tmp
- else:
- return tmp[:-2]+'X'
-
- def __traitementISBN(self,isbn):
- """__traitementISBN10 : isbn --> (isbn sans cle en int, key en int)
- On s'appuye des connaissance sur les ISBN
- Si on a une erreur dans l'isbn elle nous renvoie le ISBNvide
- ATTETION la cle X est en realite 10"""
- try:
- key = isbn[-1]
- isbn = int(isbn[:-1])
- isbnTmp = isbn
- except:
- print "Erreur dans isbn ... elle doit que comporter d'entier sauf la cle"
- return self.ISBNvide
- else:
- keyCalculee = 0
- for i in range(9):
- keyCalculee = keyCalculee + ((isbn % 10) * (i + 2))
- isbn = isbn / 10
- #traitement pour avoir la cle
- keyCalculee = keyCalculee % 11
- keyCalculee = 11 - keyCalculee
-
- #specificite dans l'isbn10
- if key=="X":
- key='10'
- if keyCalculee==11:
- keyCalculee=0
- #fin des specificite dans l'isbn10
-
- if str(keyCalculee)==key:
- return self.__fusionKeyISBN(isbnTmp,int(key))
- else:
- return self.ISBNvide
-
- def __fusionKeyISBN(self,isbn,key):
- """Pour fusionner la cle et l'isbn
- pour avoir un simple entier"""
-
- if key < 10:
- return isbn*10 + key
- else:
- return isbn*100 + key
-
- def setISBN(self,isbn):
- self.__init__(isbn)
-
- def getISBN(self,isbn):
- return self.__isbn
-
- def testISBNvide(self,isbn):
- if(isbn==self.ISBNvide):
- return True
- else:
- return False
-
- class __convertISBN10:
-
- ISBNvide = -1
- def __init__(self,isbn):
- self.__isbn = self.__traitementISBN(isbn)
-
- def __del__(self):
- del(self)
-
- def __len__(self):
- return len(str(self.__isbn))
-
- def __str__(self):
- if (self.testISBNvide(self.__isbn)):
- return "*ISBN vide*"
- else:
- tmp = str(self.__isbn)
- if len(tmp)==10:
- return tmp
- else:
- return tmp[:-2]+'X'
-
- def __traitementISBN(self,isbn):
- """__traitementISBN10 : isbn --> (isbn sans cle en int, key en int)
- On s'appuye des connaissance sur les ISBN
- Si on a une erreur dans l'isbn elle nous renvoie le ISBNvide
- ATTETION la cle X est en realite 10"""
- try:
- isbn = int(isbn)
- isbnTmp = isbn
- except:
- print "Erreur dans isbn ... elle doit que comporter d'entier sauf la cle"
- return self.ISBNvide
- else:
- keyCalculee = 0
- for i in range(9):
- keyCalculee = keyCalculee + ((isbn % 10) * (i + 2))
- isbn = isbn / 10
- #traitement pour avoir la cle
- keyCalculee = keyCalculee % 11
- keyCalculee = 11 - keyCalculee
-
- #specificite dans l'isbn10
- if keyCalculee==11:
- keyCalculee=0
- #fin des specificite dans l'isbn10
- return self.__fusionKeyISBN(isbnTmp,keyCalculee)
-
- def __fusionKeyISBN(self,isbn,key):
- """Pour fusionner la cle et l'isbn
- pour avoir un simple entier"""
-
- if key < 10:
- return isbn*10 + key
- else:
- return isbn*100 + key
-
- def setISBN(self,isbn):
- self.__init__(isbn)
-
- def getISBN(self,isbn):
- return self.__isbn
-
- def testISBNvide(self,isbn):
- if(isbn==self.ISBNvide):
- return True
- else:
- return False
-
-
- class __IsbnPourTreize:
- #Constantes de la classe
- ISBNvide = -1
-
- def __init__(self,isbn):
- "prend un isbn de forme string"
- self.__isbn = self.__traitementISBN(isbn)
-
- def __del__(self):
- del(self)
-
- def __len__(self):
- return len(str(self.__isbn))
-
- def __str__(self):
- if (self.testISBNvide(self.__isbn)):
- return "*ISBN vide*"
- else:
- return str(self.__isbn)
-
- def __traitementISBN(self,isbn):
- """__traitementISBN : isbn --> (isbn sans cle en int, key en int)
- On s'appuye des connaissance sur les ISBN"""
- try:
- key = isbn[-1]
- isbn = int(isbn[:-1])
- isbnTmp = isbn
- except:
- print "Erreur dans isbn ... elle doit comporter que des entiers"
- return self.ISBNvide
- else:
- keyCalculee = 0
- ponderation3 = True
- for i in range(13):
- if ponderation3:
- keyCalculee = keyCalculee + (isbn % 10) * 3
- ponderation3 = False
- else:
- keyCalculee = keyCalculee + (isbn % 10)
- ponderation3 = True
- isbn = isbn / 10
- #traitement pour avoir la cle
- keyCalculee = (- keyCalculee) % 10
- #eyCalculee = 11 - keyCalculee
-
- #le test final
- if str(keyCalculee)==key:
- return self.__fusionKeyISBN(isbnTmp,int(key))
- else:
- print "%s - %s" % (str(keyCalculee),key)
- return self.ISBNvide
-
- def __fusionKeyISBN(self,isbn,key):
- """Pour fusionner la cle et l'isbn
- pour avoir un simple entier"""
- return isbn*10 + key
-
- def setISBN(self,isbn):
- self.__init__(isbn)
-
- def getISBN(self,isbn):
- return self.__isbn
-
- def testISBNvide(self,isbn):
- if(isbn==self.ISBNvide):
- return True
- else:
- return False
-
ISBNvide = -1
def ISBN(isbn):
"""Pour ajouter de facon transparent les ISBN
Qui sont deux types differents:
ISBN-10 ==> Ancienne Version
ISBN-13 et EAN-13 (CodeBarre) ==> Nouvelle Version"""
#Changement de representation au cas ou...
try:
isbn = str(isbn)
except:
"ISBN : Mauvaise forme...."
else:
#Traitement de toutes les variates d'ecriture....
isbn = isbn.replace("-","")
isbn = isbn.replace(".","")
#Le choix entre les ISBN
if len(isbn)==10:
return __IsbnPourDix(isbn)
elif len(isbn)==13:
return __IsbnPourTreize(isbn)
else:
print "ISBN n'a pas ete reconnue"
return -1 #FIXME: Houlala verifier ca
def conversionEANetISBN13enISBN10(isbn):
"""Pour cette fonction il nous faut de l'isbn en texte ou en int"""
try:
isbn = str(isbn)
except:
"ISBN : Mauvaise forme...."
else:
if len(isbn)==13:
#Traitement de toutes les variates d'ecriture....
isbn = isbn.replace("-","")
isbn = isbn.replace(".","")
#On retire ce qui est devant et la cle
isbn = isbn[3:-1]
return __convertISBN10(isbn)
else:
print "Appel conversion EAN 13 ou ISBN 13 mais ISBN de longueur non egal a 13"
class __IsbnPourDix:
#Constantes de la classe
ISBNvide = -1
def __init__(self,isbn):
"prend un isbn de forme string"
self.__isbn = self.__traitementISBN(isbn)
def __del__(self):
del(self)
def __len__(self):
return len(str(self.__isbn))
def __str__(self):
if (self.testISBNvide(self.__isbn)):
return "*ISBN vide*"
else:
tmp = str(self.__isbn)
if len(tmp)==10:
return tmp
else:
return tmp[:-2]+'X'
def __traitementISBN(self,isbn):
"""__traitementISBN10 : isbn --> (isbn sans cle en int, key en int)
On s'appuye des connaissance sur les ISBN
Si on a une erreur dans l'isbn elle nous renvoie le ISBNvide
ATTETION la cle X est en realite 10"""
try:
key = isbn[-1]
isbn = int(isbn[:-1])
isbnTmp = isbn
except:
print "Erreur dans isbn ... elle doit que comporter d'entier sauf la cle"
return self.ISBNvide
else:
keyCalculee = 0
for i in range(9):
keyCalculee = keyCalculee + ((isbn % 10) * (i + 2))
isbn = isbn / 10
#traitement pour avoir la cle
keyCalculee = keyCalculee % 11
keyCalculee = 11 - keyCalculee
#specificite dans l'isbn10
if key=="X":
key='10'
if keyCalculee==11:
keyCalculee=0
#fin des specificite dans l'isbn10
if str(keyCalculee)==key:
return self.__fusionKeyISBN(isbnTmp,int(key))
else:
return self.ISBNvide
def __fusionKeyISBN(self,isbn,key):
"""Pour fusionner la cle et l'isbn
pour avoir un simple entier"""
if key < 10:
return isbn*10 + key
else:
return isbn*100 + key
def setISBN(self,isbn):
self.__init__(isbn)
def getISBN(self,isbn):
return self.__isbn
def testISBNvide(self,isbn):
if(isbn==self.ISBNvide):
return True
else:
return False
class __convertISBN10:
ISBNvide = -1
def __init__(self,isbn):
self.__isbn = self.__traitementISBN(isbn)
def __del__(self):
del(self)
def __len__(self):
return len(str(self.__isbn))
def __str__(self):
if (self.testISBNvide(self.__isbn)):
return "*ISBN vide*"
else:
tmp = str(self.__isbn)
if len(tmp)==10:
return tmp
else:
return tmp[:-2]+'X'
def __traitementISBN(self,isbn):
"""__traitementISBN10 : isbn --> (isbn sans cle en int, key en int)
On s'appuye des connaissance sur les ISBN
Si on a une erreur dans l'isbn elle nous renvoie le ISBNvide
ATTETION la cle X est en realite 10"""
try:
isbn = int(isbn)
isbnTmp = isbn
except:
print "Erreur dans isbn ... elle doit que comporter d'entier sauf la cle"
return self.ISBNvide
else:
keyCalculee = 0
for i in range(9):
keyCalculee = keyCalculee + ((isbn % 10) * (i + 2))
isbn = isbn / 10
#traitement pour avoir la cle
keyCalculee = keyCalculee % 11
keyCalculee = 11 - keyCalculee
#specificite dans l'isbn10
if keyCalculee==11:
keyCalculee=0
#fin des specificite dans l'isbn10
return self.__fusionKeyISBN(isbnTmp,keyCalculee)
def __fusionKeyISBN(self,isbn,key):
"""Pour fusionner la cle et l'isbn
pour avoir un simple entier"""
if key < 10:
return isbn*10 + key
else:
return isbn*100 + key
def setISBN(self,isbn):
self.__init__(isbn)
def getISBN(self,isbn):
return self.__isbn
def testISBNvide(self,isbn):
if(isbn==self.ISBNvide):
return True
else:
return False
class __IsbnPourTreize:
#Constantes de la classe
ISBNvide = -1
def __init__(self,isbn):
"prend un isbn de forme string"
self.__isbn = self.__traitementISBN(isbn)
def __del__(self):
del(self)
def __len__(self):
return len(str(self.__isbn))
def __str__(self):
if (self.testISBNvide(self.__isbn)):
return "*ISBN vide*"
else:
return str(self.__isbn)
def __traitementISBN(self,isbn):
"""__traitementISBN : isbn --> (isbn sans cle en int, key en int)
On s'appuye des connaissance sur les ISBN"""
try:
key = isbn[-1]
isbn = int(isbn[:-1])
isbnTmp = isbn
except:
print "Erreur dans isbn ... elle doit comporter que des entiers"
return self.ISBNvide
else:
keyCalculee = 0
ponderation3 = True
for i in range(13):
if ponderation3:
keyCalculee = keyCalculee + (isbn % 10) * 3
ponderation3 = False
else:
keyCalculee = keyCalculee + (isbn % 10)
ponderation3 = True
isbn = isbn / 10
#traitement pour avoir la cle
keyCalculee = (- keyCalculee) % 10
#eyCalculee = 11 - keyCalculee
#le test final
if str(keyCalculee)==key:
return self.__fusionKeyISBN(isbnTmp,int(key))
else:
print "%s - %s" % (str(keyCalculee),key)
return self.ISBNvide
def __fusionKeyISBN(self,isbn,key):
"""Pour fusionner la cle et l'isbn
pour avoir un simple entier"""
return isbn*10 + key
def setISBN(self,isbn):
self.__init__(isbn)
def getISBN(self,isbn):
return self.__isbn
def testISBNvide(self,isbn):
if(isbn==self.ISBNvide):
return True
else:
return False