def test_anonymise_deconstruct__deconstructs(self):
     string, imports = self.serialize(gdpr_assist.ANONYMISE(
         models.SET_NULL))
     self.assertEqual(
         string,
         "gdpr_assist.ANONYMISE(django.db.models.deletion.SET_NULL)")
     self.serialize_round_trip(gdpr_assist.ANONYMISE(models.SET_NULL))
class ForeignKeyToUnregisteredModel(models.Model):
    chars = models.CharField(max_length=255, blank=True)
    target = models.ForeignKey(
        "PrivateUnregisteredTargetModel",
        null=True,
        blank=True,
        on_delete=gdpr_assist.ANONYMISE(models.SET_NULL),
        related_name="foreignkey",
    )

    class PrivacyMeta:
        fields = ["chars"]
class OneToOneFieldModel(models.Model):
    chars = models.CharField(max_length=255, blank=True)
    target = models.OneToOneField(
        "PrivateTargetModel",
        null=True,
        blank=True,
        on_delete=gdpr_assist.ANONYMISE(models.SET_NULL),
        related_name="onetoonefield",
    )

    class PrivacyMeta:
        fields = ["chars"]
Exemple #4
0
class ForeignKeyModel(models.Model):
    chars = models.CharField(max_length=255, blank=True)
    target = models.ForeignKey(
        'PrivateTargetModel',
        null=True,
        blank=True,
        on_delete=gdpr_assist.ANONYMISE(models.SET_NULL),
        related_name='foreignkey',
    )

    class PrivacyMeta:
        fields = ['chars']
class ForeignKeyToCanNotAnonymisedModel(models.Model):
    chars = models.CharField(max_length=255, blank=True)
    target = models.ForeignKey(
        "PrivateTargetCanNotAnonymiseModel",
        null=True,
        blank=True,
        on_delete=gdpr_assist.ANONYMISE(models.SET_NULL),
        related_name="foreignkey",
    )

    class PrivacyMeta:
        fields = ["chars"]
        can_anonymise = False
Exemple #6
0
class Like(models.Model, Activity):

    user = models.ForeignKey(User, verbose_name='uzytkownicy', on_delete=gdpr_assist.ANONYMISE(models.SET_NULL))
    created_at = models.DateTimeField(auto_now_add=True)
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey()

    @property
    def activity_actor_attr(self):
        return self.user


        
    def test_register_on_delete_anonymise__finds_target(self):
        TargetMockModel = mock.MagicMock()

        mock_field = mock.MagicMock(spec=models.ForeignKey)
        mock_field.remote_field = mock.MagicMock()
        mock_field.remote_field.on_delete = gdpr_assist.ANONYMISE(None)
        mock_field.related_model = TargetMockModel

        MockModel = mock.MagicMock()
        MockModel._meta.get_fields.return_value = [mock_field]

        registry.models[MockModel] = None

        self.app_config.register_on_delete_anonymise()

        self.assertEqual(registry.watching_on_delete, [TargetMockModel])
    def test_validate_on_delete_anonymise__not_registered__raises_exception(
            self):
        mock_field = mock.MagicMock(spec=models.ForeignKey)
        mock_field.name = "sample_field"
        mock_field.remote_field = mock.MagicMock()
        mock_field.remote_field.on_delete = gdpr_assist.ANONYMISE(None)

        MockModel = mock.MagicMock()
        MockModel._meta.get_fields.return_value = [mock_field]
        MockModel._meta.app_label = "test"
        MockModel._meta.object_name = "Sample"

        with mock.patch.object(apps, "get_models"):
            apps.get_models.return_value = [MockModel]
            with self.assertRaises(ValueError) as cm:
                self.app_config.validate_on_delete_anonymise()
            self.assertEqual(
                ("Relationship test.Sample.sample_field set to anonymise on "
                 "delete, but model is not registered with gdpr-assist"),
                str(cm.exception),
            )
class Migration(migrations.Migration):

    initial = True

    dependencies = []

    operations = [
        migrations.CreateModel(
            name="HealthRecord",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("anonymised", models.BooleanField(default=False)),
                ("notes", models.CharField(max_length=255)),
            ],
        ),
        migrations.CreateModel(
            name="MailingListLog",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("anonymised", models.BooleanField(default=False)),
                ("email", models.EmailField(max_length=254)),
                ("sent_at", models.DateTimeField()),
            ],
        ),
        migrations.CreateModel(
            name="Person",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("anonymised", models.BooleanField(default=False)),
                ("name", models.CharField(max_length=255)),
                ("email", models.EmailField(max_length=254)),
            ],
            options={"verbose_name_plural": "People"},
        ),
        migrations.CreateModel(
            name="PersonProfile",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("anonymised", models.BooleanField(default=False)),
                ("age", models.IntegerField(blank=True, null=True)),
                ("address", models.TextField(blank=True)),
                ("has_children", models.BooleanField(null=True)),
                (
                    "person",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=gdpr_assist.ANONYMISE(
                            django.db.models.deletion.SET_NULL),
                        to="example.Person",
                    ),
                ),
            ],
        ),
        migrations.AddField(
            model_name="healthrecord",
            name="person",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                to="example.Person"),
        ),
    ]
Exemple #10
0
class Migration(migrations.Migration):

    initial = True

    dependencies = []

    run_before = [("gdpr_assist", "0002_privacyanonymised")]

    operations = [
        migrations.CreateModel(
            name="FirstSearchModel",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(max_length=255)),
                ("email", models.EmailField(max_length=254)),
            ],
        ),
        migrations.CreateModel(
            name="ForeignKeyModel",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(blank=True, max_length=255)),
            ],
        ),
        migrations.CreateModel(
            name="ForeignKeyToUnregisteredModel",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(blank=True, max_length=255)),
            ],
        ),
        migrations.CreateModel(
            name="ModelWithoutPrivacyMeta",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(max_length=255)),
                ("email", models.EmailField(max_length=254)),
            ],
        ),
        migrations.CreateModel(
            name="ModelWithPrivacyMeta",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(max_length=255)),
                ("email", models.EmailField(max_length=254)),
            ],
        ),
        migrations.CreateModel(
            name="OneToOneFieldModel",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(blank=True, max_length=255)),
            ],
        ),
        migrations.CreateModel(
            name="PrivateTargetModel",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(blank=True, max_length=255)),
            ],
        ),
        migrations.CreateModel(
            name="PrivateUnregisteredTargetModel",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(blank=True, max_length=255)),
            ],
        ),
        migrations.CreateModel(
            name="SecondSearchModel",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(max_length=255)),
                ("email", models.EmailField(max_length=254)),
            ],
        ),
        migrations.CreateModel(
            name="TargetModel",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(blank=True, max_length=255)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForbiddenForAutoField",
            fields=[("id", models.AutoField(primary_key=True, serialize=False))],
        ),
        migrations.CreateModel(
            name="TestModelForbiddenForManyToManyField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "field",
                    models.ManyToManyField(
                        related_name="_testmodelforbiddenformanytomanyfield_field_+",
                        to="gdpr_assist_tests_app.TargetModel",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForbiddenForUnknownCustomField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "field",
                    tests.gdpr_assist_tests_app.models.UnknownCustomField(
                        max_length=255
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForBigIntegerField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.BigIntegerField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForBinaryField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.BinaryField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForBooleanField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.BooleanField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForCharField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.CharField(max_length=255)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForDateField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.DateField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForDateTimeField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.DateTimeField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForDecimalField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.DecimalField(decimal_places=2, max_digits=7)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForDurationField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.DurationField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForEmailField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.EmailField(max_length=254)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForFileField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.FileField(upload_to="")),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForFilePathField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.FilePathField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForFloatField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.FloatField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForForeignKey",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "field",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="+",
                        to="gdpr_assist_tests_app.TargetModel",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForGenericIPAddressField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.GenericIPAddressField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForImageField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.ImageField(upload_to="")),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForIntegerField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.IntegerField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForKnownCustomField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "field",
                    tests.gdpr_assist_tests_app.models.KnownCustomField(max_length=255),
                ),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableBigIntegerField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.BigIntegerField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableBinaryField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.BinaryField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableCharField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.CharField(blank=True, max_length=255)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableDateField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.DateField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableDateTimeField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.DateTimeField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableDecimalField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "field",
                    models.DecimalField(
                        blank=True, decimal_places=2, max_digits=7, null=True
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableDurationField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.DurationField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableEmailField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.EmailField(blank=True, max_length=254, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableFileField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.FileField(blank=True, null=True, upload_to="")),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableFilePathField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.FilePathField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableFloatField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.FloatField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableForeignKey",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "field",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="+",
                        to="gdpr_assist_tests_app.TargetModel",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableGenericIPAddressField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.GenericIPAddressField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableImageField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.ImageField(blank=True, null=True, upload_to="")),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableIntegerField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.IntegerField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableNullBooleanField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.NullBooleanField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableOneToOneField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "field",
                    models.OneToOneField(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="+",
                        to="gdpr_assist_tests_app.TargetModel",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullablePositiveIntegerField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.PositiveIntegerField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullablePositiveSmallIntegerField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.PositiveSmallIntegerField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableSlugField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.SlugField(blank=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableSmallIntegerField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.SmallIntegerField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableTextField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.TextField(blank=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableTimeField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.TimeField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableURLField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.URLField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullableUUIDField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.UUIDField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForNullBooleanField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.NullBooleanField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForOneToOneField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "field",
                    models.OneToOneField(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="+",
                        to="gdpr_assist_tests_app.TargetModel",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForPositiveIntegerField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.PositiveIntegerField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForPositiveSmallIntegerField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.PositiveSmallIntegerField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForSlugField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.SlugField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForSmallIntegerField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.SmallIntegerField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForTextField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.TextField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForTimeField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.TimeField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForURLField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.URLField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForUUIDField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.UUIDField()),
            ],
        ),
        migrations.CreateModel(
            name="TestModelForUUIDFieldUnique",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("field", models.UUIDField(unique=True)),
            ],
        ),
        migrations.CreateModel(
            name="ThirdSearchModel",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(max_length=255)),
                ("email", models.EmailField(max_length=254)),
            ],
        ),
        migrations.CreateModel(
            name="ForeignKeyToCanNotAnonymisedModel",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(blank=True, max_length=255)),
            ],
        ),
        migrations.CreateModel(
            name="ForthSearchModel",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(max_length=255)),
                ("email", models.EmailField(max_length=254)),
            ],
        ),
        migrations.CreateModel(
            name="ModelWithPrivacyMetaCanNotAnonymise",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(max_length=255)),
                ("email", models.EmailField(max_length=254)),
            ],
        ),
        migrations.CreateModel(
            name="PrivateTargetCanNotAnonymiseModel",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("chars", models.CharField(blank=True, max_length=255)),
            ],
        ),
        migrations.AddField(
            model_name="onetoonefieldmodel",
            name="target",
            field=models.OneToOneField(
                blank=True,
                null=True,
                on_delete=gdpr_assist.ANONYMISE(django.db.models.deletion.SET_NULL),
                related_name="onetoonefield",
                to="gdpr_assist_tests_app.PrivateTargetModel",
            ),
        ),
        migrations.AddField(
            model_name="foreignkeytounregisteredmodel",
            name="target",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=gdpr_assist.ANONYMISE(django.db.models.deletion.SET_NULL),
                related_name="foreignkey",
                to="gdpr_assist_tests_app.PrivateUnregisteredTargetModel",
            ),
        ),
        migrations.AddField(
            model_name="foreignkeymodel",
            name="target",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=gdpr_assist.ANONYMISE(django.db.models.deletion.SET_NULL),
                related_name="foreignkey",
                to="gdpr_assist_tests_app.PrivateTargetModel",
            ),
        ),
        migrations.AddField(
            model_name="foreignkeytocannotanonymisedmodel",
            name="target",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=gdpr_assist.ANONYMISE(django.db.models.deletion.SET_NULL),
                related_name="foreignkey",
                to="gdpr_assist_tests_app.PrivateTargetCanNotAnonymiseModel",
            ),
        ),
    ]
class Migration(migrations.Migration):

    initial = True

    dependencies = []

    operations = [
        migrations.CreateModel(
            name='HealthRecord',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('anonymised', models.BooleanField(default=False)),
                ('notes', models.CharField(max_length=255)),
            ],
        ),
        migrations.CreateModel(
            name='MailingListLog',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('anonymised', models.BooleanField(default=False)),
                ('email', models.EmailField(max_length=254)),
                ('sent_at', models.DateTimeField()),
            ],
        ),
        migrations.CreateModel(
            name='Person',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('anonymised', models.BooleanField(default=False)),
                ('name', models.CharField(max_length=255)),
                ('email', models.EmailField(max_length=254)),
            ],
            options={
                'verbose_name_plural': 'People',
            },
        ),
        migrations.CreateModel(
            name='PersonProfile',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
                                  primary_key=True,
                                  serialize=False,
                                  verbose_name='ID')),
                ('anonymised', models.BooleanField(default=False)),
                ('age', models.IntegerField(blank=True, null=True)),
                ('address', models.TextField(blank=True)),
                ('has_children', models.NullBooleanField()),
                ('person',
                 models.ForeignKey(blank=True,
                                   null=True,
                                   on_delete=gdpr_assist.ANONYMISE(
                                       django.db.models.deletion.SET_NULL),
                                   to='example.Person')),
            ],
        ),
        migrations.AddField(
            model_name='healthrecord',
            name='person',
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                to='example.Person'),
        ),
    ]
 def test_anonymise_action__protect__raises_error(self):
     with self.assertRaises(ValueError) as cm:
         gdpr_assist.ANONYMISE(models.PROTECT)
     self.assertEqual('Cannot ANONYMISE(PROTECT)', str(cm.exception))
 def test_anonymise_action__cascade__raises_error(self):
     with self.assertRaises(ValueError) as cm:
         gdpr_assist.ANONYMISE(models.CASCADE)
     self.assertEqual('Cannot ANONYMISE(CASCADE)', str(cm.exception))
 def test_anonymise_action__set_default__initialises(self):
     action = gdpr_assist.ANONYMISE(models.SET_DEFAULT)
     self.assertIsInstance(action, gdpr_assist.ANONYMISE)
 def test_anonymise_action__set_null__initialises(self):
     action = gdpr_assist.ANONYMISE(models.SET_NULL)
     self.assertIsInstance(action, gdpr_assist.ANONYMISE)