summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ishtar_common/tests.py22
-rw-r--r--ishtar_common/views.py11
-rw-r--r--ishtar_common/views_item.py14
3 files changed, 38 insertions, 9 deletions
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index 8fac95853..4398ed762 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -2063,7 +2063,11 @@ class MergeTest(TestCase):
class GDPRTest(TestCase):
def setUp(self):
- self.user, created = User.objects.get_or_create(username="username")
+ self.username = "username666"
+ self.password = "dcbqj7xnjkxnjsknx!@%"
+ self.user = User.objects.create_superuser(
+ self.username, "nomail@nomail.com", self.password
+ )
self.person_1 = models.Person.objects.create(
name="Boule",
surname=" ",
@@ -2098,6 +2102,22 @@ class GDPRTest(TestCase):
last_log = models.GDPRLog.objects.order_by("-pk").all()[0]
self.assertEqual(last_log.persons.count(), 2)
+ def test_views(self):
+ nb = models.GDPRLog.objects.count()
+ c = Client()
+ c.login(username=self.username, password=self.password)
+ self.settings(GDPR_LOGGING=True)
+ c.get(reverse("get-person"))
+ self.assertEqual(models.GDPRLog.objects.count(), nb + 1)
+ self.assertEqual(models.GDPRLog.objects.order_by('-pk')[0].activity, "DC")
+ c.get(reverse("get-person", args=["csv"]))
+ self.assertEqual(models.GDPRLog.objects.count(), nb + 2)
+ self.assertEqual(models.GDPRLog.objects.order_by('-pk')[0].activity, "DE")
+ response = c.get(reverse("show-person", args=[self.person_1.pk, ""]))
+ self.assertEqual(models.GDPRLog.objects.count(), nb + 3)
+ self.assertEqual(models.GDPRLog.objects.order_by('-pk')[0].activity, "PC")
+
+
def test_create_log_performance(self):
persons = []
for idx in range(5000):
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 4fc2c94b7..c5ab88efa 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -1106,14 +1106,19 @@ get_organization = get_item(models.Organization, "get_organization", "organizati
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"))
-show_person = show_item(models.Person, "person")
-def get_person_gdpr_log(request, data_type, queryset, slice_query):
- activity = "DE" if data_type == "csv" else "DC"
+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)
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index 3ed380465..25ffe582e 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -338,7 +338,7 @@ def show_source_item(request, source_id, model, name, base_dct, extra_dct):
return HttpResponse(content, content_type="application/xhtml")
-def show_item(model, name, extra_dct=None, model_for_perms=None):
+def show_item(model, name, extra_dct=None, model_for_perms=None, callback=None):
def func(request, pk, **dct):
check_model = model
if model_for_perms:
@@ -372,11 +372,15 @@ def show_item(model, name, extra_dct=None, model_for_perms=None):
dct["window_id_underscore"] = dct["window_id"].replace("-", "_")
if str(pk).startswith("source-"):
return show_source_item(request, pk, model, name, dct, extra_dct)
- try:
- item = q.get(pk=pk)
- except (ObjectDoesNotExist, ValueError):
+ q = q.filter(pk=pk)
+ if not q.count():
return HttpResponse("")
+ if callback:
+ callback("show_item", request, doc_type, q)
+
+ item = q.all()[0]
+
# list current perms
for perm in Permission.objects.filter(
codename__startswith='view_').values_list("codename", flat=True).all():
@@ -2427,7 +2431,7 @@ def get_item(
slice_query = None
if not manual_sort_key:
slice_query = (start, end)
- callback(request, data_type, items, slice_query)
+ callback("get_item", request, data_type, items, slice_query)
if manual_sort_key:
items = items.all()