Skip to content

Commit 82bfddd

Browse files
committed
AppealHistory savepoint via an Admin checkbox
1 parent d963fa0 commit 82bfddd

File tree

4 files changed

+33
-3
lines changed

4 files changed

+33
-3
lines changed

api/admin.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from lang.admin import TranslationAdmin, TranslationInlineModelAdmin
2525
from notifications.models import RecordType, SubscriptionType
2626

27-
from .forms import ActionForm
27+
from .forms import ActionForm, AppealForm
2828

2929
# from reversion.models import Revision
3030

@@ -445,6 +445,13 @@ class GeneralDocumentInline(admin.TabularInline, TranslationInlineModelAdmin):
445445

446446

447447
class AppealAdmin(CompareVersionAdmin, RegionRestrictedAdmin, TranslationAdmin):
448+
449+
@admin.display(description="Force history save")
450+
def force_history_save(self, obj):
451+
return obj._force_history_save
452+
453+
form = AppealForm
454+
force_history_save.boolean = False
448455
country_in = "country__pk__in"
449456
region_in = "region__pk__in"
450457
inlines = [AppealDocumentInline]
@@ -513,6 +520,7 @@ def confirm_events(self, request, queryset):
513520
def save_model(self, request, obj, form, change):
514521
if obj.country:
515522
obj.region = obj.country.region
523+
obj._force_history_save = form.cleaned_data.get("force_history_save", False)
516524
super().save_model(request, obj, form, change)
517525

518526

api/forms.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from django.utils.translation import gettext_lazy as _
66

77
from .logger import logger
8-
from .models import Action, ActionOrg, ActionType
8+
from .models import Action, ActionOrg, ActionType, Appeal
99

1010

1111
class ActionForm(forms.ModelForm):
@@ -17,6 +17,19 @@ class Meta:
1717
fields = "__all__"
1818

1919

20+
class AppealForm(forms.ModelForm):
21+
force_history_save = forms.BooleanField(
22+
label="Save changes to history",
23+
required=False,
24+
initial=False,
25+
help_text="Check if changes should be saved to AppealHistory, regardless of the values of the fields.",
26+
)
27+
28+
class Meta:
29+
model = Appeal
30+
fields = "__all__"
31+
32+
2033
class LoginForm(forms.Form):
2134
email = forms.CharField(label=_("email"), required=True)
2235
password = forms.CharField(

api/models.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,6 +1205,15 @@ class Appeal(models.Model):
12051205
default=0.00,
12061206
editable=False,
12071207
)
1208+
_force_history_save = None
1209+
1210+
@property
1211+
def force_history_save(self):
1212+
return self._force_history_save
1213+
1214+
@force_history_save.setter
1215+
def force_history_save(self, value):
1216+
self._force_history_save = value
12081217

12091218
class Meta:
12101219
ordering = (

api/receivers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ def add_update_appeal_history(sender, instance, created, **kwargs):
214214
if field.name not in ["id", "appeal", "valid_from", "valid_to", "aid", "amount_funded"]
215215
]
216216
now = timezone.now()
217-
changed = False
217+
changed = getattr(instance, "force_history_save", False)
218218

219219
if created: # Appeal Insert
220220
AppealHistory.objects.create(

0 commit comments

Comments
 (0)