Flow exporting/importing (#187)

* stages/*: Add SerializerModel as base model, implement serializer property

* flows: add initial flow exporter and importer

* policies/*: implement .serializer for all policies

* root: fix missing dacite requirement
This commit is contained in:
Jens L
2020-08-22 00:42:15 +02:00
committed by GitHub
parent 8b17e8be99
commit 0e0898c3cf
33 changed files with 681 additions and 21 deletions

View File

@ -6,11 +6,13 @@ from django.db import models
from django.forms import ModelForm
from django.utils.translation import gettext_lazy as _
from model_utils.managers import InheritanceManager
from rest_framework.serializers import BaseSerializer
from passbook.lib.models import (
CreatedUpdatedModel,
InheritanceAutoManager,
InheritanceForeignKey,
SerializerModel,
)
from passbook.policies.exceptions import PolicyException
from passbook.policies.types import PolicyRequest, PolicyResult
@ -32,7 +34,7 @@ class PolicyBindingModel(models.Model):
verbose_name_plural = _("Policy Binding Models")
class PolicyBinding(models.Model):
class PolicyBinding(SerializerModel):
"""Relationship between a Policy and a PolicyBindingModel."""
policy_binding_uuid = models.UUIDField(
@ -55,6 +57,12 @@ class PolicyBinding(models.Model):
order = models.IntegerField()
@property
def serializer(self) -> BaseSerializer:
from passbook.policies.api import PolicyBindingSerializer
return PolicyBindingSerializer
def __str__(self) -> str:
return f"PolicyBinding policy={self.policy} target={self.target} order={self.order}"
@ -65,7 +73,7 @@ class PolicyBinding(models.Model):
unique_together = ("policy", "target", "order")
class Policy(CreatedUpdatedModel):
class Policy(SerializerModel, 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."""