|
@@ -7,8 +7,8 @@ class CoinLdapSyncModel(models.Model):
|
|
|
|
|
|
"""
|
|
|
Ce modèle abstrait est à utiliser lorsqu'il s'agit de définir un modèle
|
|
|
- à synchroniser avec le LDAP. Le modèle doit définir la methode sync_to_ldap
|
|
|
- qui s'occupe du transfert vers le LDAP.
|
|
|
+ à synchroniser avec le LDAP. Le modèle doit définir le methodes :
|
|
|
+ sync_to_ldap et delete_from_ldap qui s'occupe du transfert vers le LDAP.
|
|
|
L'avantage de ce modèle est que si cette méthode échoue, la sauvegarde en
|
|
|
base de données échoue a son tour et rien n'est sauvegardé afin de conservé
|
|
|
l'intégrité.
|
|
@@ -18,6 +18,11 @@ class CoinLdapSyncModel(models.Model):
|
|
|
raise NotImplementedError('Using CoinLdapSyncModel require '
|
|
|
'sync_to_ldap method being implemented')
|
|
|
|
|
|
+
|
|
|
+ def delete_from_ldap(self):
|
|
|
+ raise NotImplementedError('Using CoinLdapSyncModel require '
|
|
|
+ 'delete_from_ldap method being implemented')
|
|
|
+
|
|
|
@transaction.atomic
|
|
|
def save(self, *args, **kwargs):
|
|
|
# Détermine si on est dans une création ou une mise à jour
|
|
@@ -34,5 +39,16 @@ class CoinLdapSyncModel(models.Model):
|
|
|
except:
|
|
|
raise
|
|
|
|
|
|
+ @transaction.atomic
|
|
|
+ def delete(self, *args, **kwargs):
|
|
|
+ # Supprime de la base de donnée (mais sans commit, cf decorator)
|
|
|
+ super(CoinLdapSyncModel, self).delete(*args, **kwargs)
|
|
|
+
|
|
|
+ try:
|
|
|
+ self.delete_from_ldap()
|
|
|
+ except:
|
|
|
+ raise
|
|
|
+
|
|
|
+
|
|
|
class Meta:
|
|
|
abstract = True
|