Class XmlPb

Un article de Sweetydoc.

Jump to: navigation, search

<<

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.


Sommaire

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'}]

<<