flows/*: Initial flows stage1 implementation

This commit is contained in:
Jens Langhammer
2020-05-07 20:51:06 +02:00
parent 179f0097c0
commit 8de66b27ad
12 changed files with 317 additions and 1 deletions

10
passbook/policies/apps.py Normal file
View File

@ -0,0 +1,10 @@
"""passbook policies app config"""
from django.apps import AppConfig
class PassbookPoliciesConfig(AppConfig):
"""passbook policies app config"""
name = "passbook.policies"
label = "passbook_policies"
verbose_name = "passbook Policies"

View File

@ -0,0 +1,77 @@
# Generated by Django 3.0.3 on 2020-05-07 18:35
import uuid
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
("passbook_core", "0011_auto_20200222_1822"),
]
operations = [
migrations.CreateModel(
name="PolicyBinding",
fields=[
(
"uuid",
models.UUIDField(
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
),
),
("enabled", models.BooleanField(default=True)),
("order", models.IntegerField(default=0)),
(
"policy",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="+",
to="passbook_core.Policy",
),
),
],
options={
"verbose_name": "Policy Binding",
"verbose_name_plural": "Policy Bindings",
},
),
migrations.CreateModel(
name="PolicyBindingModel",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"policies",
models.ManyToManyField(
related_name="_policybindingmodel_policies_+",
through="passbook_policies.PolicyBinding",
to="passbook_core.Policy",
),
),
],
),
migrations.AddField(
model_name="policybinding",
name="target",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="+",
to="passbook_policies.PolicyBindingModel",
),
),
]

View File

View File

@ -0,0 +1,31 @@
"""Policy base models"""
from django.db import models
from django.utils.translation import gettext_lazy as _
from passbook.core.models import Policy
from passbook.lib.models import UUIDModel
class PolicyBindingModel(models.Model):
"""Base Model for objects which have Policies applied to them"""
policies = models.ManyToManyField(Policy, through="PolicyBinding", related_name="+")
class PolicyBinding(UUIDModel):
"""Relationship between a Policy and a PolicyBindingModel."""
enabled = models.BooleanField(default=True)
policy = models.ForeignKey(Policy, on_delete=models.CASCADE, related_name="+")
target = models.ForeignKey(
PolicyBindingModel, on_delete=models.CASCADE, related_name="+"
)
# default value and non-unique for compatibility
order = models.IntegerField(default=0)
class Meta:
verbose_name = _("Policy Binding")
verbose_name_plural = _("Policy Bindings")