django-mapentity
django-mapentity copied to clipboard
Duplicated entity created even when errors occur
La copie de l'entité dupliquée est créée même quand le processus rencontre des erreurs.
Le code actuel de rollback de la transaction ne fonctionne pas car les savepoints n'ont pas d'effet en fonctionnement normal avec autocommit = on.
def duplicate(self, **kwargs):
if not self.can_duplicate:
return None
sid = transaction.savepoint()
try:
[...]
transaction.savepoint_commit(sid)
except Exception as exc:
transaction.savepoint_rollback(sid)
raise exc
return clone
Proposition de code de rollback fonctionnel :
def duplicate(self, **kwargs):
if not self.can_duplicate:
return None
try:
with transaction.atomic():
[...]
except Exception as exc:
# améliorer le traitement de l'exception ici
raise exc
return clone
Il faudrait ajouter un test fonctionnel sur ce point.