summaryrefslogtreecommitdiff
path: root/ishtar_common/forms_common.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2024-01-18 11:36:19 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2024-02-10 14:45:20 +0100
commit13cff2b11a06c9ed334c6bad96ce14a7e3d629d8 (patch)
tree97fa08bfda014a128ce7fe161695e8123b221cea /ishtar_common/forms_common.py
parent7293985b9d83bed4130a677521ef72d4759202c3 (diff)
downloadIshtar-13cff2b11a06c9ed334c6bad96ce14a7e3d629d8.tar.bz2
Ishtar-13cff2b11a06c9ed334c6bad96ce14a7e3d629d8.zip
✨ GDPR: manage merge action, admin consultation, edition, delete, ✅ GDPR tests
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r--ishtar_common/forms_common.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 45b43000f..7f37e86ce 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -931,12 +931,13 @@ class MergeIntoForm(forms.Form):
)
)
- def merge(self):
+ def merge(self, callback=None, request=None):
model = self.associated_model
try:
main_item = model.objects.get(pk=self.cleaned_data["main_item"])
except model.DoesNotExist:
return
+ items, items_pk = [], [main_item.pk]
for pk in self.items:
if pk == str(main_item.pk):
continue
@@ -944,6 +945,12 @@ class MergeIntoForm(forms.Form):
item = model.objects.get(pk=pk)
except model.DoesNotExist:
continue
+ items.append(item)
+ items_pk.append(item.pk)
+ if callback:
+ queryset = models.Person.objects.filter(pk__in=items_pk)
+ callback("merge_person", request, "", queryset)
+ for item in items:
main_item.merge(item)
return main_item
@@ -1725,9 +1732,9 @@ class MergeFormSet(BaseModelFormSet):
self._cached_list = []
super(MergeFormSet, self).__init__(*args, **kwargs)
- def merge(self):
+ def merge(self, callback=None, request=None):
for form in self.initial_forms:
- form.merge()
+ form.merge(callback=callback, request=request)
def initial_form_count(self):
"""
@@ -1804,6 +1811,11 @@ class MergeForm(forms.ModelForm):
from_item = getattr(self.instance, self.FROM_KEY)
except ObjectDoesNotExist:
return
+ callback = kwargs.get("callback", None)
+ if callback:
+ request = kwargs.get("request")
+ queryset = models.Person.objects.filter(pk__in=[to_item.pk, from_item.pk])
+ callback("merge_person", request, "", queryset)
if self.cleaned_data.get("a_is_duplicate_b"):
to_item.merge(from_item)
elif self.cleaned_data.get("b_is_duplicate_a"):