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-04-16 16:40:54 +0200
commitf7fc18c5267d745ab754be0039967f53468a3665 (patch)
tree564af9db675d6b4b6e87c60954665a84b9147483 /ishtar_common/forms_common.py
parenta7977d70f31e1c7b8dbb2c6766124d608d889709 (diff)
downloadIshtar-f7fc18c5267d745ab754be0039967f53468a3665.tar.bz2
Ishtar-f7fc18c5267d745ab754be0039967f53468a3665.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"):