diff options
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 65 |
1 files changed, 46 insertions, 19 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index c5ab88efa..d5b2f369f 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -77,6 +77,7 @@ from ishtar_common.utils import ( clean_session_cache, CSV_OPTIONS, get_field_labels_from_path, + get_person_gdpr_log, get_random_item_image_link, shortify, dict_to_tuple, @@ -1092,11 +1093,13 @@ def autocomplete_author(request): return HttpResponse(data, content_type="text/plain") -new_person = new_qa_item(models.Person, forms.PersonForm, page_name=_("New person")) -modify_person = modify_qa_item(models.Person, forms.PersonForm) +new_person = new_qa_item(models.Person, forms.PersonForm, page_name=_("New person"), + callback=get_person_gdpr_log) +modify_person = modify_qa_item(models.Person, forms.PersonForm, callback=get_person_gdpr_log) detail_person = get_short_html_detail(models.Person) new_person_noorga = new_qa_item( - models.Person, forms.NoOrgaPersonForm, page_name=_("New person") + models.Person, forms.NoOrgaPersonForm, page_name=_("New person"), + callback=get_person_gdpr_log ) new_organization = new_qa_item( models.Organization, forms.OrganizationForm, page_name=_("New organization") @@ -1107,17 +1110,6 @@ modify_organization = modify_qa_item(models.Organization, forms.OrganizationForm detail_organization = get_short_html_detail(models.Organization) new_author = new_qa_item(models.Author, forms.AuthorForm, page_name=_("New author")) - -def get_person_gdpr_log(view_name, request, data_type, queryset, slice_query=None): - if view_name == "get_item": - activity = "DE" if data_type == "csv" else "DC" - elif view_name == "show_item": - activity = "PC" if not data_type else "PC" - else: - return - models.GDPRLog.create_log(request, activity, queryset, slice_query) - - show_person = show_item(models.Person, "person", callback=get_person_gdpr_log) get_person = get_item(models.Person, "get_person", "person", callback=get_person_gdpr_log) @@ -1170,7 +1162,7 @@ def reset_wizards(request): ITEM_PER_PAGE = 20 -def merge_action(model, form, key, name_key="name"): +def merge_action(model, form, key, name_key="name", callback=None): def merge(request, page=1): current_url = key + "_merge" if not page: @@ -1207,7 +1199,7 @@ def merge_action(model, form, key, name_key="name"): if request.method == "POST": context["formset"] = FormSet(request.POST, queryset=queryset) if context["formset"].is_valid(): - context["formset"].merge() + context["formset"].merge(callback=callback, request=request) return redirect(reverse(current_url, kwargs={"page": page})) else: context["formset"] = FormSet(queryset=queryset) @@ -1234,7 +1226,7 @@ def regenerate_external_id(request): return HttpResponseRedirect(reverse("success")) -person_merge = merge_action(models.Person, forms.MergePersonForm, "person") +person_merge = merge_action(models.Person, forms.MergePersonForm, "person", callback=get_person_gdpr_log) organization_merge = merge_action( models.Organization, forms.MergeOrganizationForm, "organization" ) @@ -2380,6 +2372,12 @@ class PersonCreate(LoginRequiredMixin, CreateView): form_class = forms.BasePersonForm template_name = "ishtar/person_form.html" + def form_valid(self, form): + returned = super().form_valid(form) + get_person_gdpr_log("new_item", self.request, None, + self.model.objects.filter(pk=self.object.pk)) + return returned + def get_success_url(self): return reverse("person_edit", args=[self.object.pk]) @@ -2389,6 +2387,12 @@ class PersonEdit(LoginRequiredMixin, UpdateView): form_class = forms.BasePersonForm template_name = "ishtar/person_form.html" + def form_valid(self, form): + returned = super().form_valid(form) + get_person_gdpr_log("modify_item", self.request, None, + self.model.objects.filter(pk=self.object.pk)) + return returned + def get_success_url(self): return reverse("person_edit", args=[self.object.pk]) @@ -2412,14 +2416,19 @@ class PersonManualMerge(ManualMergeMixin, IshtarMixin, LoginRequiredMixin, FormV redir_url = "person_manual_merge_items" -class ManualMergeItemsMixin(object): +class ManualMergeItemsMixin: + item_type = None + def get_form_kwargs(self): kwargs = super(ManualMergeItemsMixin, self).get_form_kwargs() kwargs["items"] = self.kwargs["pks"].split("_") return kwargs def form_valid(self, form): - self.item = form.merge() + callback = None + if self.item_type: + callback = get_person_gdpr_log + self.item = form.merge(callback=callback, request=self.request) return super(ManualMergeItemsMixin, self).form_valid(form) def get_success_url(self): @@ -2499,6 +2508,12 @@ class OrganizationPersonCreate(LoginRequiredMixin, CreateView): def get_success_url(self): return reverse("organization_person_edit", args=[self.object.pk]) + def form_valid(self, form): + returned = super().form_valid(form) + get_person_gdpr_log("new_item", self.request, None, + self.model.objects.filter(pk=self.object.pk)) + return returned + class OrganizationPersonEdit(LoginRequiredMixin, UpdateView): model = models.Person @@ -2514,6 +2529,12 @@ class OrganizationPersonEdit(LoginRequiredMixin, UpdateView): def get_success_url(self): return reverse("organization_person_edit", args=[self.object.pk]) + def form_valid(self, form): + returned = super().form_valid(form) + get_person_gdpr_log("modify_item", self.request, None, + self.model.objects.filter(pk=self.object.pk)) + return returned + # documents @@ -3033,6 +3054,12 @@ class QAPersonForm(QAItemEditForm): model = models.Person form_class = forms.QAPersonFormMulti + def form_save(self, form): + get_person_gdpr_log("modify_item", self.request, None, + self.model.objects.filter(pk__in=[item.pk for item in self.items])) + form.save(self.items, self.request.user) + return HttpResponseRedirect(reverse("success")) + class QADocumentForm(QAItemEditForm): model = models.Document |