diff options
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 |
commit | f7fc18c5267d745ab754be0039967f53468a3665 (patch) | |
tree | 564af9db675d6b4b6e87c60954665a84b9147483 /ishtar_common/forms_common.py | |
parent | a7977d70f31e1c7b8dbb2c6766124d608d889709 (diff) | |
download | Ishtar-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.py | 18 |
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"): |