-
Valentin Samir authored
D'une façon général, on s'assure que tous les locks concernant un cransLdapObject sont bien mis avec l'identifiant de lock cransLdapObject.lockId. Avant d'entrer dans le context manager du cransLdapObject, on fait bien attention d'intercepter les exceptions pouvant être levée pour libérer les locks potentiellement déjà posés avant de propager l'exception. Si on essayer d'appeler une methode d'enregistrement (.save() .delete() .create()) sans utiliser un context manager, on affiche un warning sur stderr. À terme ça serait bien de n'utiliser que des context manager pour être sûr qu'on ne laisse pas de lock traîner dans la base de donnée. Il faut bien sûr faire attention de bien ajouter les lock avec l'identifiant cransLdapObject.lockId puisqu'on se base là dessus pour les libérer. Si on a utiliser une context manager, en en sortant, on rend le cransLdapObject read only (de façon douce en modifiant le cransLdapObject.mode et de façon force en changeant les methodes save create delete pour lever l'exception EnvironmentError("Hors du context, impossible de faire des écritures"))
9aa0de65