migrate to per-model UUID Primary key, remove UUIDModel (#26)

* *: migrate to per-model UUID Primary key, remove UUIDModel

* *: fix import order, fix unittests
This commit is contained in:
Jens L
2020-05-20 09:17:06 +02:00
committed by GitHub
parent 13a20478fd
commit 24a3e787dd
104 changed files with 671 additions and 2189 deletions

View File

@ -1,4 +1,4 @@
# Generated by Django 3.0.5 on 2020-05-10 10:01
# Generated by Django 3.0.6 on 2020-05-19 22:08
import django.db.models.deletion
from django.db import migrations, models

View File

@ -1,4 +1,4 @@
# Generated by Django 2.2.6 on 2019-10-07 14:07
# Generated by Django 3.0.6 on 2020-05-19 22:08
import django.db.models.deletion
from django.db import migrations, models

View File

@ -1,4 +1,4 @@
# Generated by Django 3.0.3 on 2020-02-18 14:00
# Generated by Django 3.0.6 on 2020-05-19 22:08
import django.db.models.deletion
from django.db import migrations, models

View File

@ -11,7 +11,8 @@ class PolicyBindingForm(forms.ModelForm):
"""Form to edit Policy to PolicyBindingModel Binding"""
target = forms.ModelChoiceField(
queryset=PolicyBindingModel.objects.all().select_subclasses()
queryset=PolicyBindingModel.objects.all().select_subclasses(),
to_field_name="pbm_uuid",
)
class Meta:

View File

@ -1,4 +1,4 @@
# Generated by Django 2.2.6 on 2019-10-07 14:07
# Generated by Django 3.0.6 on 2020-05-19 22:08
import django.db.models.deletion
from django.db import migrations, models

View File

@ -1,4 +1,4 @@
# Generated by Django 3.0.3 on 2020-05-07 18:35
# Generated by Django 3.0.6 on 2020-05-19 22:07
import uuid
@ -10,6 +10,8 @@ class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name="Policy",
@ -17,7 +19,7 @@ class Migration(migrations.Migration):
("created", models.DateTimeField(auto_now_add=True)),
("last_updated", models.DateTimeField(auto_now=True)),
(
"uuid",
"policy_uuid",
models.UUIDField(
default=uuid.uuid4,
editable=False,
@ -36,7 +38,7 @@ class Migration(migrations.Migration):
name="PolicyBinding",
fields=[
(
"uuid",
"policy_binding_uuid",
models.UUIDField(
default=uuid.uuid4,
editable=False,
@ -64,23 +66,28 @@ class Migration(migrations.Migration):
name="PolicyBindingModel",
fields=[
(
"id",
models.AutoField(
auto_created=True,
"pbm_uuid",
models.UUIDField(
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"policies",
models.ManyToManyField(
related_name="_policybindingmodel_policies_+",
blank=True,
related_name="bindings",
through="passbook_policies.PolicyBinding",
to="passbook_policies.Policy",
),
),
],
options={
"verbose_name": "Policy Binding Model",
"verbose_name_plural": "Policy Binding Models",
},
),
migrations.AddField(
model_name="policybinding",

View File

@ -1,20 +0,0 @@
# Generated by Django 3.0.3 on 2020-05-08 12:30
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("passbook_policies", "0001_initial"),
]
operations = [
migrations.AlterModelOptions(
name="policybindingmodel",
options={
"verbose_name": "Policy Binding Model",
"verbose_name_plural": "Policy Binding Models",
},
),
]

View File

@ -1,23 +0,0 @@
# Generated by Django 3.0.5 on 2020-05-16 15:16
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("passbook_policies", "0002_auto_20200508_1230"),
]
operations = [
migrations.AlterField(
model_name="policybindingmodel",
name="policies",
field=models.ManyToManyField(
blank=True,
related_name="_policybindingmodel_policies_+",
through="passbook_policies.PolicyBinding",
to="passbook_policies.Policy",
),
),
]

View File

@ -1,9 +1,11 @@
"""Policy base models"""
from uuid import uuid4
from django.db import models
from django.utils.translation import gettext_lazy as _
from model_utils.managers import InheritanceManager
from passbook.lib.models import CreatedUpdatedModel, UUIDModel
from passbook.lib.models import CreatedUpdatedModel
from passbook.policies.exceptions import PolicyException
from passbook.policies.types import PolicyRequest, PolicyResult
@ -11,6 +13,8 @@ from passbook.policies.types import PolicyRequest, PolicyResult
class PolicyBindingModel(models.Model):
"""Base Model for objects that have policies applied to them."""
pbm_uuid = models.UUIDField(primary_key=True, editable=False, default=uuid4)
policies = models.ManyToManyField(
"Policy", through="PolicyBinding", related_name="bindings", blank=True
)
@ -23,9 +27,13 @@ class PolicyBindingModel(models.Model):
verbose_name_plural = _("Policy Binding Models")
class PolicyBinding(UUIDModel):
class PolicyBinding(models.Model):
"""Relationship between a Policy and a PolicyBindingModel."""
policy_binding_uuid = models.UUIDField(
primary_key=True, editable=False, default=uuid4
)
enabled = models.BooleanField(default=True)
policy = models.ForeignKey("Policy", on_delete=models.CASCADE, related_name="+")
@ -45,10 +53,12 @@ class PolicyBinding(UUIDModel):
verbose_name_plural = _("Policy Bindings")
class Policy(UUIDModel, CreatedUpdatedModel):
class Policy(CreatedUpdatedModel):
"""Policies which specify if a user is authorized to use an Application. Can be overridden by
other types to add other fields, more logic, etc."""
policy_uuid = models.UUIDField(primary_key=True, editable=False, default=uuid4)
name = models.TextField(blank=True, null=True)
negate = models.BooleanField(default=False)
order = models.IntegerField(default=0)

View File

@ -1,4 +1,4 @@
# Generated by Django 2.2.6 on 2019-10-07 14:07
# Generated by Django 3.0.6 on 2020-05-19 22:08
import django.db.models.deletion
from django.db import migrations, models

View File

@ -1,4 +1,4 @@
# Generated by Django 2.2.6 on 2019-10-07 14:07
# Generated by Django 3.0.6 on 2020-05-19 22:08
import django.db.models.deletion
from django.conf import settings
@ -10,8 +10,8 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
("passbook_policies", "0001_initial"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("passbook_policies", "0001_initial"),
]
operations = [