From 9626539dada51ee2549835d46b681bc463c499ff Mon Sep 17 00:00:00 2001 From: Richard Terry Date: Wed, 1 Jul 2020 09:09:46 +0100 Subject: [PATCH] Resolve merge issues --- gdpr_assist/models.py | 17 ++++++++++------- tests/test_admin.py | 25 ++++++++++++------------- tests/test_anonymisation.py | 2 +- tests/test_commands.py | 14 +++++++++----- 4 files changed, 32 insertions(+), 26 deletions(-) diff --git a/gdpr_assist/models.py b/gdpr_assist/models.py index d904234..13191de 100644 --- a/gdpr_assist/models.py +++ b/gdpr_assist/models.py @@ -1,21 +1,22 @@ """ Model-related functionality """ -from copy import copy -import six import sys +from copy import copy from django.apps import apps from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation from django.contrib.contenttypes.models import ContentType from django.db import models -from django.utils.translation import ugettext_lazy as _ from django.utils.functional import cached_property +from django.utils.translation import ugettext_lazy as _ + +import six -from . import app_settings from . import handlers # noqa +from . import app_settings from .anonymiser import anonymise_field, anonymise_related_objects -from .signals import pre_anonymise, post_anonymise +from .signals import post_anonymise, pre_anonymise class PrivacyQuerySet(models.query.QuerySet): @@ -32,7 +33,9 @@ def anonymise(self, for_bulk=True): bulk_objects = [] for obj in self: - bulk_objects.append(obj.anonymise(for_bulk=for_bulk)) + privacy_obj = obj.anonymise(for_bulk=for_bulk) + if privacy_obj: + bulk_objects.append(privacy_obj) if bulk_objects and for_bulk: PrivacyAnonymised.objects.bulk_create(bulk_objects) @@ -209,7 +212,7 @@ def get_privacy_meta(cls): def check_can_anonymise(cls): return cls.get_privacy_meta().can_anonymise - def anonymise(self, force=False): + def anonymise(self, force=False, for_bulk=False): privacy_meta = self.get_privacy_meta() # Only anonymise if allowed diff --git a/tests/test_admin.py b/tests/test_admin.py index 8e1939a..e54e610 100644 --- a/tests/test_admin.py +++ b/tests/test_admin.py @@ -1,9 +1,9 @@ """ Test admin tools """ -from io import BytesIO, TextIOWrapper import csv import zipfile +from io import BytesIO, TextIOWrapper import django from django.contrib.auth.models import User @@ -15,10 +15,12 @@ import gdpr_assist from .gdpr_assist_tests_app.models import ( - ModelWithPrivacyMeta, FirstSearchModel, + ForthSearchModel, + ModelWithPrivacyMeta, + ModelWithPrivacyMetaCanNotAnonymise, SecondSearchModel, - ModelWithPrivacyMetaCanNotAnonymise, ForthSearchModel) +) model_root_url = '/admin/gdpr_assist_tests_app/modelwithprivacymeta/' @@ -141,8 +143,8 @@ def test_anonymise_action_submit__can_anonymise_disabled__404(self): self.assertEqual(response.status_code, 404) def test_anonymise_view_submit__can_anonymise_disabled__404(self): - obj_1 = mommy.make(ModelWithPrivacyMetaCanNotAnonymise, anonymised=False) - obj_2 = mommy.make(ModelWithPrivacyMetaCanNotAnonymise, anonymised=False) + obj_1 = mommy.make(ModelWithPrivacyMetaCanNotAnonymise) + obj_2 = mommy.make(ModelWithPrivacyMetaCanNotAnonymise) response = self.client.post( '/admin/gdpr_assist_tests_app/modelwithprivacymetacannotanonymise/anonymise/', @@ -156,8 +158,8 @@ def test_anonymise_view_submit__can_anonymise_disabled__404(self): obj_1.refresh_from_db() obj_2.refresh_from_db() - self.assertFalse(obj_1.anonymised) - self.assertFalse(obj_2.anonymised) + self.assertFalse(obj_1.is_anonymised()) + self.assertFalse(obj_2.is_anonymised()) class TestAdminTool(AdminTestCase): @@ -231,12 +233,11 @@ def test_anonymise____can_anonymise_disabled__not_all_records_anonymised(self): obj_1 = mommy.make( FirstSearchModel, email='an@example.com', - anonymised=False, ) + obj_1.anonymise() obj_4 = mommy.make( ForthSearchModel, email='an@example.com', - anonymised=False, ) content_type_1 = ContentType.objects.get_for_model(FirstSearchModel).pk content_type_4 = ContentType.objects.get_for_model(ForthSearchModel).pk @@ -256,8 +257,8 @@ def test_anonymise____can_anonymise_disabled__not_all_records_anonymised(self): obj_1.refresh_from_db() obj_4.refresh_from_db() - self.assertTrue(obj_1.anonymised) - self.assertFalse(obj_4.anonymised) + self.assertTrue(obj_1.is_anonymised()) + self.assertFalse(obj_4.is_anonymised()) if django.VERSION <= (1, 9): # Django 1.8 support - redirects include host @@ -275,7 +276,6 @@ def test_warn_will_not_anonymise__present(self): mommy.make( ForthSearchModel, email='an@example.com', - anonymised=False, ) response = self.client.post(tool_root_url, {'term': 'an@example.com'}) @@ -291,7 +291,6 @@ def test_warn_will_not_anonymise__not_present(self): mommy.make( FirstSearchModel, email='an@example.com', - anonymised=False, ) response = self.client.post(tool_root_url, {'term': 'an@example.com'}) diff --git a/tests/test_anonymisation.py b/tests/test_anonymisation.py index 137bd86..1295f68 100644 --- a/tests/test_anonymisation.py +++ b/tests/test_anonymisation.py @@ -841,7 +841,7 @@ def test_foreignkey_delete__can_anonymise_disabled__anonymise_not_propagated(sel target.delete() obj.refresh_from_db() - self.assertFalse(obj.anonymised) + self.assertFalse(obj.is_anonymised()) self.assertEqual(obj.chars, 'Test') diff --git a/tests/test_commands.py b/tests/test_commands.py index 616c297..d696fcf 100644 --- a/tests/test_commands.py +++ b/tests/test_commands.py @@ -1,14 +1,19 @@ """ Test management commands """ -import six import sys from io import StringIO from django.core.management import call_command from django.test import TestCase -from .gdpr_assist_tests_app.models import ModelWithPrivacyMeta, ModelWithPrivacyMetaCanNotAnonymise +import six + +from .gdpr_assist_tests_app.models import ( + ModelWithPrivacyMeta, + ModelWithPrivacyMetaCanNotAnonymise, +) + # If True, display output from call_command - use for debugging tests DISPLAY_CALL_COMMAND = False @@ -89,13 +94,12 @@ def test_anonymise_command__does_notanonymises_data(self): obj_1 = ModelWithPrivacyMetaCanNotAnonymise.objects.create( chars='test', email='test@example.com', - anonymised=False, ) - self.assertFalse(obj_1.anonymised) + self.assertFalse(obj_1.is_anonymised()) self.run_command('anonymise_db', interactive=False) obj_1.refresh_from_db() - self.assertFalse(obj_1.anonymised) + self.assertFalse(obj_1.is_anonymised()) class TestRerunCommand(CommandTestCase):