mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 15:50:03 +01:00 
			
		
		
		
	Use pre_delete signal insted of Model.delete() to prevent note balance issues when deleting a transaction (don't do it) in Django Admin
This commit is contained in:
		| @@ -3,7 +3,7 @@ | ||||
|  | ||||
| from django.apps import AppConfig | ||||
| from django.conf import settings | ||||
| from django.db.models.signals import post_save | ||||
| from django.db.models.signals import post_save, pre_delete | ||||
| from django.utils.translation import gettext_lazy as _ | ||||
|  | ||||
| from . import signals | ||||
| @@ -25,3 +25,8 @@ class NoteConfig(AppConfig): | ||||
|             signals.save_club_note, | ||||
|             sender='member.Club', | ||||
|         ) | ||||
|  | ||||
|         pre_delete.connect( | ||||
|             signals.delete_transaction, | ||||
|             sender='note.transaction', | ||||
|         ) | ||||
|   | ||||
| @@ -242,14 +242,6 @@ class Transaction(PolymorphicModel): | ||||
|         self.destination._force_save = True | ||||
|         self.destination.save() | ||||
|  | ||||
|     def delete(self, **kwargs): | ||||
|         """ | ||||
|         Whenever we want to delete a transaction (caution with this), we ensure the transaction is invalid first. | ||||
|         """ | ||||
|         self.valid = False | ||||
|         self.save(**kwargs) | ||||
|         super().delete(**kwargs) | ||||
|  | ||||
|     @property | ||||
|     def total(self): | ||||
|         return self.amount * self.quantity | ||||
|   | ||||
| @@ -24,3 +24,11 @@ def save_club_note(instance, raw, **_kwargs): | ||||
|     from .models import NoteClub | ||||
|     NoteClub.objects.get_or_create(club=instance) | ||||
|     instance.note.save() | ||||
|  | ||||
|  | ||||
| def delete_transaction(instance, **_kwargs): | ||||
|     """ | ||||
|     Whenever we want to delete a transaction (caution with this), we ensure the transaction is invalid first. | ||||
|     """ | ||||
|     instance.valid = False | ||||
|     instance.save() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user