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.3 on 2020-05-08 17:58
# 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-08 17:58
# 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-08 17:59
# Generated by Django 3.0.6 on 2020-05-19 22:08
import django.db.models.deletion
from django.db import migrations, models
@ -34,12 +34,33 @@ class Migration(migrations.Migration):
("use_tls", models.BooleanField(default=False)),
("use_ssl", models.BooleanField(default=False)),
("timeout", models.IntegerField(default=10)),
("ssl_keyfile", models.TextField(blank=True, default=None, null=True)),
("ssl_certfile", models.TextField(blank=True, default=None, null=True)),
(
"from_address",
models.EmailField(default="system@passbook.local", max_length=254),
),
(
"token_expiry",
models.IntegerField(
default=30, help_text="Time in minutes the token sent is valid."
),
),
("subject", models.TextField(default="passbook")),
(
"template",
models.TextField(
choices=[
(
"stages/email/for_email/password_reset.html",
"Password Reset",
),
(
"stages/email/for_email/account_confirmation.html",
"Account Confirmation",
),
],
default="stages/email/for_email/password_reset.html",
),
),
],
options={
"verbose_name": "Email Stage",

View File

@ -1,22 +0,0 @@
# Generated by Django 3.0.5 on 2020-05-10 18:44
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("passbook_stages_email", "0001_initial"),
]
operations = [
migrations.RemoveField(model_name="emailstage", name="ssl_certfile",),
migrations.RemoveField(model_name="emailstage", name="ssl_keyfile",),
migrations.AddField(
model_name="emailstage",
name="token_expiry",
field=models.IntegerField(
default=30, help_text="Time in minutes the token sent is valid."
),
),
]

View File

@ -1,32 +0,0 @@
# Generated by Django 3.0.5 on 2020-05-15 12:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("passbook_stages_email", "0002_auto_20200510_1844"),
]
operations = [
migrations.AddField(
model_name="emailstage",
name="subject",
field=models.TextField(default="passbook"),
),
migrations.AddField(
model_name="emailstage",
name="template",
field=models.TextField(
choices=[
("stages/email/for_email/password_reset.html", "Password Reset"),
(
"stages/email/for_email/account_confirmation.html",
"Account Confirmation",
),
],
default="stages/email/for_email/password_reset.html",
),
),
]

View File

@ -1,4 +1,4 @@
# Generated by Django 3.0.3 on 2020-05-09 18:34
# Generated by Django 3.0.6 on 2020-05-19 22:08
import django.contrib.postgres.fields
import django.db.models.deletion
@ -32,14 +32,22 @@ class Migration(migrations.Migration):
"user_fields",
django.contrib.postgres.fields.ArrayField(
base_field=models.CharField(
choices=[("e-mail", "E Mail"), ("username", "Username")],
choices=[("email", "E Mail"), ("username", "Username")],
max_length=100,
),
help_text="Fields of the user object to match against.",
size=None,
),
),
("template", models.TextField()),
(
"template",
models.TextField(
choices=[
("stages/identification/login.html", "Default Login"),
("stages/identification/recovery.html", "Default Recovery"),
]
),
),
],
options={
"verbose_name": "Identification Stage",

View File

@ -1,18 +0,0 @@
# Generated by Django 3.0.3 on 2020-05-09 19:16
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("passbook_stages_identification", "0001_initial"),
]
operations = [
migrations.AlterField(
model_name="identificationstage",
name="template",
field=models.TextField(choices=[("login/form.html", "Default Login")]),
),
]

View File

@ -1,26 +0,0 @@
# Generated by Django 3.0.3 on 2020-05-09 20:25
import django.contrib.postgres.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("passbook_stages_identification", "0002_auto_20200509_1916"),
]
operations = [
migrations.AlterField(
model_name="identificationstage",
name="user_fields",
field=django.contrib.postgres.fields.ArrayField(
base_field=models.CharField(
choices=[("email", "E Mail"), ("username", "Username")],
max_length=100,
),
help_text="Fields of the user object to match against.",
size=None,
),
),
]

View File

@ -1,23 +0,0 @@
# Generated by Django 3.0.5 on 2020-05-10 16:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("passbook_stages_identification", "0003_auto_20200509_2025"),
]
operations = [
migrations.AlterField(
model_name="identificationstage",
name="template",
field=models.TextField(
choices=[
("stages/identification/login.html", "Default Login"),
("stages/identification/recovery.html", "Default Recovery"),
]
),
),
]

View File

@ -1,4 +1,4 @@
# Generated by Django 3.0.5 on 2020-05-11 19:09
# Generated by Django 3.0.6 on 2020-05-19 22:08
import uuid
@ -13,8 +13,8 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
("passbook_flows", "0004_auto_20200510_2310"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("passbook_flows", "0001_initial"),
]
operations = [
@ -32,6 +32,13 @@ class Migration(migrations.Migration):
to="passbook_flows.Stage",
),
),
(
"continue_flow_without_invitation",
models.BooleanField(
default=False,
help_text="If this flag is set, this Stage will jump to the next Stage when no Invitation is given. By default this Stage will cancel the Flow when no invitation is given.",
),
),
],
options={
"verbose_name": "Invitation Stage",
@ -43,7 +50,7 @@ class Migration(migrations.Migration):
name="Invitation",
fields=[
(
"uuid",
"invite_uuid",
models.UUIDField(
default=uuid.uuid4,
editable=False,

View File

@ -1,21 +0,0 @@
# Generated by Django 3.0.5 on 2020-05-11 19:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("passbook_stages_invitation", "0001_initial"),
]
operations = [
migrations.AddField(
model_name="invitationstage",
name="continue_flow_without_invitation",
field=models.BooleanField(
default=False,
help_text="If this flag is set, this Stage will jump to the next Stage when no Invitation is given. By default this Stage will cancel the Flow when no invitation is given.",
),
),
]

View File

@ -1,11 +1,12 @@
"""invitation stage models"""
from uuid import uuid4
from django.contrib.postgres.fields import JSONField
from django.db import models
from django.utils.translation import gettext_lazy as _
from passbook.core.models import User
from passbook.flows.models import Stage
from passbook.lib.models import UUIDModel
class InvitationStage(Stage):
@ -34,15 +35,17 @@ class InvitationStage(Stage):
verbose_name_plural = _("Invitation Stages")
class Invitation(UUIDModel):
class Invitation(models.Model):
"""Single-use invitation link"""
invite_uuid = models.UUIDField(primary_key=True, editable=False, default=uuid4)
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
expires = models.DateTimeField(default=None, blank=True, null=True)
fixed_data = JSONField(default=dict)
def __str__(self):
return f"Invitation {self.uuid.hex} created by {self.created_by}"
return f"Invitation {self.invite_uuid.hex} created by {self.created_by}"
class Meta:

View File

@ -1,4 +1,4 @@
# Generated by Django 3.0.3 on 2020-05-08 17:59
# 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-08 17:58
# Generated by Django 3.0.6 on 2020-05-19 22:08
import django.contrib.postgres.fields
import django.db.models.deletion
@ -11,7 +11,6 @@ class Migration(migrations.Migration):
dependencies = [
("passbook_flows", "0001_initial"),
("passbook_policies", "0001_initial"),
]
operations = [
@ -37,10 +36,6 @@ class Migration(migrations.Migration):
size=None,
),
),
(
"password_policies",
models.ManyToManyField(blank=True, to="passbook_policies.Policy"),
),
],
options={
"verbose_name": "Password Stage",

View File

@ -1,14 +0,0 @@
# Generated by Django 3.0.5 on 2020-05-10 16:48
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("passbook_stages_password", "0001_initial"),
]
operations = [
migrations.RemoveField(model_name="passwordstage", name="password_policies",),
]

View File

@ -1,4 +1,4 @@
# Generated by Django 3.0.5 on 2020-05-14 11:46
# Generated by Django 3.0.6 on 2020-05-19 22:08
import uuid
@ -11,8 +11,8 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
("passbook_flows", "0005_auto_20200512_1158"),
("passbook_policies", "0001_initial"),
("passbook_flows", "0001_initial"),
]
operations = [
@ -20,7 +20,7 @@ class Migration(migrations.Migration):
name="Prompt",
fields=[
(
"uuid",
"prompt_uuid",
models.UUIDField(
default=uuid.uuid4,
editable=False,

View File

@ -1,10 +1,11 @@
"""prompt models"""
from uuid import uuid4
from django import forms
from django.db import models
from django.utils.translation import gettext_lazy as _
from passbook.flows.models import Stage
from passbook.lib.models import UUIDModel
from passbook.policies.models import PolicyBindingModel
@ -18,9 +19,11 @@ class FieldTypes(models.TextChoices):
HIDDEN = "hidden"
class Prompt(UUIDModel):
class Prompt(models.Model):
"""Single Prompt, part of a prompt stage."""
prompt_uuid = models.UUIDField(primary_key=True, editable=False, default=uuid4)
field_key = models.SlugField(
help_text=_("Name of the form field, also used to store the value")
)

View File

@ -1,4 +1,4 @@
# Generated by Django 3.0.5 on 2020-05-12 11:59
# Generated by Django 3.0.6 on 2020-05-19 22:08
import django.db.models.deletion
from django.db import migrations, models
@ -9,7 +9,7 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
("passbook_flows", "0005_auto_20200512_1158"),
("passbook_flows", "0001_initial"),
]
operations = [

View File

@ -1,4 +1,4 @@
# Generated by Django 3.0.5 on 2020-05-10 14:03
# 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.5 on 2020-05-10 22:56
# 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.5 on 2020-05-10 21:21
# Generated by Django 3.0.6 on 2020-05-19 22:08
import django.db.models.deletion
from django.db import migrations, models
@ -9,7 +9,7 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
("passbook_flows", "0003_auto_20200509_1258"),
("passbook_flows", "0001_initial"),
]
operations = [