summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py65
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