Class XmlPb
Un article de Sweetydoc.
Créé le 08/05/2006.
Mise ajours le : 11 mars 2007 à 09:06
Version 1.00
XmlPb est un module conçu spécialement pour le programme Sweet,
Ce document décrie les fonctions du module, pour toutes questions ou suggestions veuillez contacter Djoudi a sweet.xmlpb at googlemail com.
Les variables / Attributs
pb_filename :
Variable contient le chemin d'accès au fichier XML
Exemple:
>>> from XmlPb import XmlPb
>>> PB = XmlPb('M:\\SweetProject\\XmlFile\\pb.xml')
>>> PB.pb_filename
'M:\\SweetProject\\XmlFile\\pb.xml'
>>> PB.pb_filename = 'm:\\sweetproject\\pb.xml'
>>> PB.pb_filename
'M:\\SweetProject\\pb.xml'
Si vous changez le nom du fichier pense-bête vous devez le recharger en utilisant la fonction reload_pb_file() pour que ce changement prend effet.
auto_reindex :
Variable qui détermine si le fichier pense-bête doit être re-indexé automatiquement ou non.
Elle prend une des deux (02) valeurs suivantes:
- True : Le fichier pense-bête est re-indexé à chaque utilisation de la fonction __clean_save_reload()
- False : Le fichier pense-bête n'est pas re-indexé automatique, pour re-indexer le fichier vous devez utiliser la fonction reindex_pb_file().
Par défaut auto_reindex prend False comme valeur.
Exemple:
... >>> PB.auto_reindex False >>> PB.auto_reindex = True >>> PB.auto_reindex True
pb_file_loaded :
Attribut booléen pour déterminer si le fichier pense-bête est ouvert ou non.
Exemple:
... >>> PB.pb_file_loaded True
Le résultat sera False si le fichier n'est pas ouvert (Chargé), pour charger le fichier pense-bête utiliser la fonction reload_pb_file()
Note : Cet attribut est en lecture seul, c'est à dire que si vous faite quelque chose comme:
>>> PB.pb_file_loaded = False
Vous générez une exception:
Traceback (most recent call last): File "<pyshell#8>", line 1, in -toplevel- PB.pb_file_loaded = False AttributeError: can't set attribute
Les fonctions
creat_pb_file(self, confirme_over_write = False):
Cette fonction crée un fichier pense-bête (XML) vide, c'est à dire seulement sa structure :
<?xml version="1.0" encoding="UTF-8"?> <Pb> </Pb>
Paramètre:
confirme_over_write : Il prend les valeurs True ou False
True: Si le fichier existe, il sera écrasé, ATTENTION! : Toutes les données seront perdus.
False (Valeur par défaut): si le fichier existe, cela provoquera une exception.
Exemple:
...
>>> PB.pb_filename
'm:\\pb.xml'
>>> PB.creat_pb_file()
>>> PB.get_pb_list()
[]
>>> PB.add_pb({'Date':'12/12/2006','Heure':'08:00','Message':'Sweet'})
True
>>> PB.get_pb_list()
[{u'Date': u'12/12/2006', u'Message': u'Sweet', u'Heure': u'08:00', 'ID': u'1'}]
>>> PB.creat_pb_file(True)
>>> PB.get_pb_list()
[{u'Date': u'12/12/2006', u'Message': u'Sweet', u'Heure': u'08:00', 'ID': u'1'}]
>>> PB.reload_pb_file()
>>> PB.get_pb_list()
[]
>>> PB.creat_pb_file()
Traceback (most recent call last):
File "<pyshell#13>", line 1, in -toplevel-
PB.creat_pb_file()
File "M:\SweetProject\XmlPb.py", line 77, in creat_pb_file
raise IOError, \
IOError: Fichier M:\pb.xml existe déjà.
Après la création d'un nouveau fichier pense-bête (pb), il faut le recharger en utilisent la fonction reload_pb_file()
reload_pb_file(self, creat_if_not_exist = False)
Charge ou recharge le fichier des pense-bêtes Cette fonction est utilisé par plusieurs autres fonctions de la class XmlPb, elle prend un paramètre:
Paramètre:
creat_if_not_exist:
Il prend les valeurs True ou False
True: Si le fichier n'existe pas, il sera créé.
False: (Valeur par défaut): si le fichier n'existe pas, cela provoquera une exception.
Exemple:
...
>>> PB = XmlPb('m:\\sweetproject\\pb.xml')
>>> PB.pb_file_loaded
True
>>> PB.pb_filename = 'm:\\pb.xml'
>>> PB.reload_pb_file()
Traceback (most recent call last):
File "<pyshell#62>", line 1, in -toplevel-
PB.reload_pb_file()
File "m:\sweetproject\XmlPb.py", line 136, in reload_pb_file
raise IOError, \
IOError: Impossible de lire le fichier m:\pb.xml.
>>> PB.pb_file_loaded
False
>>> PB.reload_pb_file(True)
>>> PB.pb_file_loaded
True
>>> PB.get_pb_list()
[]
pb_count(self)
Renvoi le nombre des penses-bêtes dans le fichier ouvert
Exemple:
... >>> PB.pb_count() 7
__get_last_pb_id(self):
Fonction interne à la class XmlPb qui renvoi un nouveau ID utilisé par la fonction add_pb(),elle prend l' ID maximum et ajoute un (01). Vous ne pouvez pas accèder à cette fonction, c'est à dire, vous ne pouvez pas faire quelque chose comme:
Example:
>>> PB.__get_last_pb_id() Traceback (most recent call last): File "<pyshell#14>", line 1, in -toplevel- PB.__get_last_pb_id() AttributeError: 'XmlPb' object has no attribute '__get_last_pb_id'
Note: Pour éviter d'avoir des IDs du genre 1234567890123456789 ;-), deux options sont proposé, auto_reindex ou reindex_pb_file
reindex_pb_file(self, index = 1):
Re-numérote les IDs du fichier pense-bête en se basant sur le numéro passé en paramètre, 1 est la valeur par défaut, cette fonction retourne True si l'opération c'est bien déroulez et False dans le cas contraire.
Paramètre:
Index : le premiè nombre à partir du quel la re-indexation commence, par défaut c'est 1.
Exemple:
>>> for i in PB.get_pb_list(): print 'ID:', i['ID'] ID: 23 ID: 32 ID: 34 ID: 45 ID: 56 ID: 67 ID: 179 >>> PB.reindex_pb_file() True >>> for i in PB.get_pb_list(): print 'ID:', i['ID'] ID: 1 ID: 2 ID: 3 ID: 4 ID: 5 ID: 6 ID: 7 >>> PB.reindex_pb_file(10) True >>> for i in PB.get_pb_list(): print 'ID:', i['ID'] ID: 10 ID: 11 ID: 12 ID: 13 ID: 14 ID: 15 ID: 16
__clean_save_reload(self, root = None):
Fonction interne à la class XmlPb qui nettoie, Enregistre et recharge le fichier pense-bête, vous ne pouvez pas accèder à cette fonction, c'est à dire, vous ne pouvez pas faire quelque chose comme:
Exemple:
>>> PB.__clean_save_reload() Traceback (most recent call last): File "<pyshell#28>", line 1, in -toplevel- PB.__clean_save_reload() AttributeError: 'XmlPb' object has no attribute '__clean_save_reload'
id_exist(self, pb_id)
Vérifie si l'ID passé en argument pb_id existe, elle retourne True si le ID existe, sinon elle retourne False.
L'argument pb_id peut être de type str ou int
Exemple:
>>> PB.id_exist(1)
True
>>> PB.id_exist('1')
True
>>> PB.id_exist('10999')
False
read_pb(self, pb_id):
Lit une pense-bête
Exemple:
>>> from XmlPb import XmlPb
>>> PB = XmlPb('M:\\SweetProject\\XmlFile\\pb.xml')
>>> PB.read_pb("1")
{u'Date': u'18/04/2006', u'Message': u'Votre pense b\xeate', u'Heure': u'11:00', 'ID': u'1'}
__add_pb_item(self, pb_parent, pb_item, pb_item_value):
Fonction interne à la class XmlPb qui ajoute un item du PB (Date, Heure ou Message) .
add_pb(self, dict_pb, pb_id = None):
Ajoute un pense-bête au fichier ouvert.
Paramètre:
dict_pb: Un dictionnaire qui contient le PB, qui à sont tour contient les clefs comme suit:
Date : La date.
Heure : L'heure.
Message : Le message.
pb_id :
Vous pouvez graçe à ce paramètre spécifier votre propre ID qui doit être conforme au règle suivante:
- L'ID ne doit pas exister.
- Il doit être de type int.
Notre: Il est recommandé de ne pas spécifier d’ID et de laisser la fonction le génèrer automatiquement, cette option est destinée à l'usage interne à la class.
Exemple:
>>> mypb = {'Date':'12/03/2006','Heure':'12:00','Message':'Rendez-vous avec bob'}
>>>PB.add_pb(mypb)
True
>>>PB.add_pb(mypb,10000)
True
>>> PB.get_pb_list()
[{u'Date': u'12/03/2006', u'Message': u'Rendez-vous avec bob', u'Heure': u'12:00', 'ID':
u'1'},{u'Date': u'12/12/2006', u'Message': u'Rendez-vous avec bob', u'Heure': u'08:00', 'ID':
u'10000'}]
modif_pb(self, pb_id, new_pb_value):
Modification d'un pense-bête
Paramètres:
pb_id : L'ID du pense-bête à modifié.
new_pb_value : le nouveau pense-bête.
Exemple:
...
>>> PB._XmlPb__read_pb('1')
{u'Date': u'12/03/2006', u'Message': u'Rendez-vous avec bob', u'Heure': u'12:00', 'ID': '1'}
>>> newPb = {'Date':'01/04/2006','Heure':'08:00','Message':'Rendez-vous avec Bob'}
>>> PB.modif_pb('1',newPb)
True
>>> PB._XmlPb__read_pb('1')
{u'Date': u'01/04/2006', u'Message': u'Rendez-vous avec Bob', u'Heure': u'08:00', 'ID': u'1'}
La fonction retourne True si la modification c'est bien déroulée et False au cas contraire.
empty_pb_file(self):
Vide le fichier pense-bête, ATTENTION toutes les informations seront supprimées.
>>>PB.pb_count() 7 >>> PB.empty_pb_file() True >>> PB.pb_count() 0
La fonction renvoi True si tout ce passe bien, et provoque une exception dans le cas contraire.
del_pb(self, id_list):
Supprime un ou plusieurs pense-bêtes.
id_list : la liste des IDs des pense-bêtes à supprimer.
Exemple: Vous avez le choix entre :
>>> PB.del_pb(1)
>>> PB.del_pb('1')
>>> PB.del_pb([1,2,3])
ou
>>> PB.del_pb(['1','2','3'])
get_pb_list(self):
Renvoi la liste des pense-bêtes (dictionnaire)
Exemple:
>>> PB.get_pb_list()
[] # Fichier vide.
>>> PB.get_pb_list()
[{u'Date': u'12/03/2006', u'Message': u'Rendez-vous avec bob', u'Heure': u'12:00', 'ID':
u'1'},{u'Date': u'12/12/2006', u'Message': u'Rendez-vous avec bob', u'Heure': u'08:00', 'ID':
u'10000'}]

