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:
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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."
|
||||
),
|
||||
),
|
||||
]
|
||||
@ -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",
|
||||
),
|
||||
),
|
||||
]
|
||||
@ -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",
|
||||
|
||||
@ -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")]),
|
||||
),
|
||||
]
|
||||
@ -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,
|
||||
),
|
||||
),
|
||||
]
|
||||
@ -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"),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
@ -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,
|
||||
|
||||
@ -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.",
|
||||
),
|
||||
),
|
||||
]
|
||||
@ -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:
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",),
|
||||
]
|
||||
@ -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,
|
||||
|
||||
@ -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")
|
||||
)
|
||||
|
||||
@ -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 = [
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 = [
|
||||
|
||||
Reference in New Issue
Block a user