Initial commit
This commit is contained in:
291
env/lib/python3.10/site-packages/wagtail/migrations/0001_initial.py
vendored
Normal file
291
env/lib/python3.10/site-packages/wagtail/migrations/0001_initial.py
vendored
Normal file
@@ -0,0 +1,291 @@
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
import wagtail.search.index
|
||||
|
||||
|
||||
def set_page_path_collation(apps, schema_editor):
|
||||
"""
|
||||
Treebeard's path comparison logic can fail on certain locales such as sk_SK, which
|
||||
sort numbers after letters. To avoid this, we explicitly set the collation for the
|
||||
'path' column to the (non-locale-specific) 'C' collation.
|
||||
|
||||
See: https://groups.google.com/d/msg/wagtail/q0leyuCnYWI/I9uDvVlyBAAJ
|
||||
"""
|
||||
if schema_editor.connection.vendor == "postgresql":
|
||||
schema_editor.execute(
|
||||
"""
|
||||
ALTER TABLE wagtailcore_page ALTER COLUMN path TYPE VARCHAR(255) COLLATE "C"
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("auth", "0001_initial"),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("contenttypes", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="GroupPagePermission",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
primary_key=True,
|
||||
auto_created=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"permission_type",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("add", "Add"),
|
||||
("edit", "Edit"),
|
||||
("publish", "Publish"),
|
||||
],
|
||||
max_length=20,
|
||||
),
|
||||
),
|
||||
(
|
||||
"group",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
to="auth.Group",
|
||||
related_name="page_permissions",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Page",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
primary_key=True,
|
||||
auto_created=True,
|
||||
),
|
||||
),
|
||||
("path", models.CharField(max_length=255, unique=True)),
|
||||
("depth", models.PositiveIntegerField()),
|
||||
("numchild", models.PositiveIntegerField(default=0)),
|
||||
(
|
||||
"title",
|
||||
models.CharField(
|
||||
max_length=255,
|
||||
help_text="The page title as you'd like it to be seen by the public",
|
||||
),
|
||||
),
|
||||
(
|
||||
"slug",
|
||||
models.SlugField(
|
||||
help_text="The name of the page as it will appear in URLs e.g http://domain.com/blog/[my-slug]/"
|
||||
),
|
||||
),
|
||||
("live", models.BooleanField(default=True, editable=False)),
|
||||
(
|
||||
"has_unpublished_changes",
|
||||
models.BooleanField(default=False, editable=False),
|
||||
),
|
||||
(
|
||||
"url_path",
|
||||
models.CharField(blank=True, max_length=255, editable=False),
|
||||
),
|
||||
(
|
||||
"seo_title",
|
||||
models.CharField(
|
||||
blank=True,
|
||||
max_length=255,
|
||||
help_text=(
|
||||
"Optional. 'Search Engine Friendly' title."
|
||||
" This will appear at the top of the browser window."
|
||||
),
|
||||
verbose_name="Page title",
|
||||
),
|
||||
),
|
||||
(
|
||||
"show_in_menus",
|
||||
models.BooleanField(
|
||||
default=False,
|
||||
help_text="Whether a link to this page will appear in automatically generated menus",
|
||||
),
|
||||
),
|
||||
("search_description", models.TextField(blank=True)),
|
||||
(
|
||||
"go_live_at",
|
||||
models.DateTimeField(
|
||||
blank=True,
|
||||
verbose_name="Go live date/time",
|
||||
null=True,
|
||||
help_text="Please add a date-time in the form YYYY-MM-DD hh:mm:ss.",
|
||||
),
|
||||
),
|
||||
(
|
||||
"expire_at",
|
||||
models.DateTimeField(
|
||||
blank=True,
|
||||
verbose_name="Expiry date/time",
|
||||
null=True,
|
||||
help_text="Please add a date-time in the form YYYY-MM-DD hh:mm:ss.",
|
||||
),
|
||||
),
|
||||
("expired", models.BooleanField(default=False, editable=False)),
|
||||
(
|
||||
"content_type",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
to="contenttypes.ContentType",
|
||||
related_name="pages",
|
||||
),
|
||||
),
|
||||
(
|
||||
"owner",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
blank=True,
|
||||
null=True,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
editable=False,
|
||||
related_name="owned_pages",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
bases=(wagtail.search.index.Indexed, models.Model),
|
||||
),
|
||||
migrations.RunPython(set_page_path_collation, migrations.RunPython.noop),
|
||||
migrations.CreateModel(
|
||||
name="PageRevision",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
primary_key=True,
|
||||
auto_created=True,
|
||||
),
|
||||
),
|
||||
("submitted_for_moderation", models.BooleanField(default=False)),
|
||||
("created_at", models.DateTimeField(auto_now_add=True)),
|
||||
("content_json", models.TextField()),
|
||||
("approved_go_live_at", models.DateTimeField(blank=True, null=True)),
|
||||
(
|
||||
"page",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
to="wagtailcore.Page",
|
||||
related_name="revisions",
|
||||
),
|
||||
),
|
||||
(
|
||||
"user",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
blank=True,
|
||||
null=True,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="PageViewRestriction",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
primary_key=True,
|
||||
auto_created=True,
|
||||
),
|
||||
),
|
||||
("password", models.CharField(max_length=255)),
|
||||
(
|
||||
"page",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
to="wagtailcore.Page",
|
||||
related_name="view_restrictions",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Site",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
primary_key=True,
|
||||
auto_created=True,
|
||||
),
|
||||
),
|
||||
("hostname", models.CharField(max_length=255, db_index=True)),
|
||||
(
|
||||
"port",
|
||||
models.IntegerField(
|
||||
default=80,
|
||||
help_text=(
|
||||
"Set this to something other than 80 if you need a specific port number"
|
||||
" to appear in URLs (e.g. development on port 8000)."
|
||||
" Does not affect request handling (so port forwarding still works)."
|
||||
),
|
||||
),
|
||||
),
|
||||
(
|
||||
"is_default_site",
|
||||
models.BooleanField(
|
||||
default=False,
|
||||
help_text=(
|
||||
"If true, this site will handle requests for all other hostnames"
|
||||
" that do not have a site entry of their own"
|
||||
),
|
||||
),
|
||||
),
|
||||
(
|
||||
"root_page",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
to="wagtailcore.Page",
|
||||
related_name="sites_rooted_here",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="site",
|
||||
unique_together={("hostname", "port")},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="grouppagepermission",
|
||||
name="page",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
to="wagtailcore.Page",
|
||||
related_name="group_permissions",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,496 @@
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
import wagtail.search.index
|
||||
|
||||
|
||||
def initial_data(apps, schema_editor):
|
||||
ContentType = apps.get_model("contenttypes.ContentType")
|
||||
Group = apps.get_model("auth.Group")
|
||||
Page = apps.get_model("wagtailcore.Page")
|
||||
Site = apps.get_model("wagtailcore.Site")
|
||||
GroupPagePermission = apps.get_model("wagtailcore.GroupPagePermission")
|
||||
|
||||
# Create page content type
|
||||
page_content_type, created = ContentType.objects.get_or_create(
|
||||
model="page", app_label="wagtailcore"
|
||||
)
|
||||
|
||||
# Create root page
|
||||
root = Page.objects.create(
|
||||
title="Root",
|
||||
slug="root",
|
||||
content_type=page_content_type,
|
||||
path="0001",
|
||||
depth=1,
|
||||
numchild=1,
|
||||
url_path="/",
|
||||
)
|
||||
|
||||
# Create homepage
|
||||
homepage = Page.objects.create(
|
||||
title="Welcome to your new Wagtail site!",
|
||||
slug="home",
|
||||
content_type=page_content_type,
|
||||
path="00010001",
|
||||
depth=2,
|
||||
numchild=0,
|
||||
url_path="/home/",
|
||||
)
|
||||
|
||||
# Create default site
|
||||
Site.objects.get_or_create(
|
||||
hostname="localhost", root_page_id=homepage.id, is_default_site=True
|
||||
)
|
||||
|
||||
# Create auth groups
|
||||
moderators_group, created = Group.objects.get_or_create(name="Moderators")
|
||||
editors_group, created = Group.objects.get_or_create(name="Editors")
|
||||
|
||||
# Create group permissions
|
||||
GroupPagePermission.objects.create(
|
||||
group=moderators_group,
|
||||
page=root,
|
||||
permission_type="add",
|
||||
)
|
||||
GroupPagePermission.objects.create(
|
||||
group=moderators_group,
|
||||
page=root,
|
||||
permission_type="edit",
|
||||
)
|
||||
GroupPagePermission.objects.create(
|
||||
group=moderators_group,
|
||||
page=root,
|
||||
permission_type="publish",
|
||||
)
|
||||
|
||||
GroupPagePermission.objects.create(
|
||||
group=editors_group,
|
||||
page=root,
|
||||
permission_type="add",
|
||||
)
|
||||
GroupPagePermission.objects.create(
|
||||
group=editors_group,
|
||||
page=root,
|
||||
permission_type="edit",
|
||||
)
|
||||
|
||||
# 0005 - add_page_lock_permission_to_moderators
|
||||
GroupPagePermission.objects.create(
|
||||
group=moderators_group,
|
||||
page=root,
|
||||
permission_type="lock",
|
||||
)
|
||||
|
||||
|
||||
def remove_initial_data(apps, schema_editor):
|
||||
"""This function does nothing. The below code is commented out together
|
||||
with an explanation of why we don't need to bother reversing any of the
|
||||
initial data"""
|
||||
pass
|
||||
# This does not need to be deleted, Django takes care of it.
|
||||
# page_content_type = ContentType.objects.get(
|
||||
# model='page',
|
||||
# app_label='wagtailcore',
|
||||
# )
|
||||
|
||||
# Page objects: Do nothing, the table will be deleted when reversing 0001
|
||||
|
||||
# Do not reverse Site creation since other models might depend on it
|
||||
|
||||
# Remove auth groups -- is this safe? External objects might depend
|
||||
# on these groups... seems unsafe.
|
||||
# Group.objects.filter(
|
||||
# name__in=('Moderators', 'Editors')
|
||||
# ).delete()
|
||||
#
|
||||
# Likewise, we're leaving all GroupPagePermission unchanged as users may
|
||||
# have been assigned such permissions and its harmless to leave them.
|
||||
|
||||
|
||||
def set_page_path_collation(apps, schema_editor):
|
||||
"""
|
||||
Treebeard's path comparison logic can fail on certain locales such as sk_SK, which
|
||||
sort numbers after letters. To avoid this, we explicitly set the collation for the
|
||||
'path' column to the (non-locale-specific) 'C' collation.
|
||||
|
||||
See: https://groups.google.com/d/msg/wagtail/q0leyuCnYWI/I9uDvVlyBAAJ
|
||||
"""
|
||||
if schema_editor.connection.vendor == "postgresql":
|
||||
schema_editor.execute(
|
||||
"""
|
||||
ALTER TABLE wagtailcore_page ALTER COLUMN path TYPE VARCHAR(255) COLLATE "C"
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
replaces = [
|
||||
("wagtailcore", "0001_initial"),
|
||||
("wagtailcore", "0002_initial_data"),
|
||||
("wagtailcore", "0003_add_uniqueness_constraint_on_group_page_permission"),
|
||||
("wagtailcore", "0004_page_locked"),
|
||||
("wagtailcore", "0005_add_page_lock_permission_to_moderators"),
|
||||
("wagtailcore", "0006_add_lock_page_permission"),
|
||||
("wagtailcore", "0007_page_latest_revision_created_at"),
|
||||
("wagtailcore", "0008_populate_latest_revision_created_at"),
|
||||
("wagtailcore", "0009_remove_auto_now_add_from_pagerevision_created_at"),
|
||||
("wagtailcore", "0010_change_page_owner_to_null_on_delete"),
|
||||
("wagtailcore", "0011_page_first_published_at"),
|
||||
("wagtailcore", "0012_extend_page_slug_field"),
|
||||
("wagtailcore", "0013_update_golive_expire_help_text"),
|
||||
("wagtailcore", "0014_add_verbose_name"),
|
||||
("wagtailcore", "0015_add_more_verbose_names"),
|
||||
("wagtailcore", "0016_change_page_url_path_to_text_field"),
|
||||
]
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("auth", "0001_initial"),
|
||||
("contenttypes", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Page",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
verbose_name="ID",
|
||||
serialize=False,
|
||||
primary_key=True,
|
||||
),
|
||||
),
|
||||
("path", models.CharField(unique=True, max_length=255)),
|
||||
("depth", models.PositiveIntegerField()),
|
||||
("numchild", models.PositiveIntegerField(default=0)),
|
||||
(
|
||||
"title",
|
||||
models.CharField(
|
||||
verbose_name="Title",
|
||||
max_length=255,
|
||||
help_text="The page title as you'd like it to be seen by the public",
|
||||
),
|
||||
),
|
||||
(
|
||||
"slug",
|
||||
models.SlugField(
|
||||
verbose_name="Slug",
|
||||
max_length=255,
|
||||
help_text="The name of the page as it will appear in URLs e.g http://domain.com/blog/[my-slug]/",
|
||||
),
|
||||
),
|
||||
(
|
||||
"live",
|
||||
models.BooleanField(
|
||||
default=True, verbose_name="Live", editable=False
|
||||
),
|
||||
),
|
||||
(
|
||||
"has_unpublished_changes",
|
||||
models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="Has unpublished changes",
|
||||
editable=False,
|
||||
),
|
||||
),
|
||||
(
|
||||
"url_path",
|
||||
models.TextField(
|
||||
verbose_name="URL path", blank=True, editable=False
|
||||
),
|
||||
),
|
||||
(
|
||||
"seo_title",
|
||||
models.CharField(
|
||||
verbose_name="Page title",
|
||||
max_length=255,
|
||||
blank=True,
|
||||
help_text=(
|
||||
"Optional. 'Search Engine Friendly' title."
|
||||
" This will appear at the top of the browser window."
|
||||
),
|
||||
),
|
||||
),
|
||||
(
|
||||
"show_in_menus",
|
||||
models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="Show in menus",
|
||||
help_text="Whether a link to this page will appear in automatically generated menus",
|
||||
),
|
||||
),
|
||||
(
|
||||
"search_description",
|
||||
models.TextField(verbose_name="Search description", blank=True),
|
||||
),
|
||||
(
|
||||
"go_live_at",
|
||||
models.DateTimeField(
|
||||
null=True,
|
||||
verbose_name="Go live date/time",
|
||||
blank=True,
|
||||
help_text="Please add a date-time in the form YYYY-MM-DD hh:mm.",
|
||||
),
|
||||
),
|
||||
(
|
||||
"expire_at",
|
||||
models.DateTimeField(
|
||||
null=True,
|
||||
verbose_name="Expiry date/time",
|
||||
blank=True,
|
||||
help_text="Please add a date-time in the form YYYY-MM-DD hh:mm.",
|
||||
),
|
||||
),
|
||||
(
|
||||
"expired",
|
||||
models.BooleanField(
|
||||
default=False, verbose_name="Expired", editable=False
|
||||
),
|
||||
),
|
||||
(
|
||||
"content_type",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name="Content type",
|
||||
related_name="pages",
|
||||
to="contenttypes.ContentType",
|
||||
),
|
||||
),
|
||||
(
|
||||
"owner",
|
||||
models.ForeignKey(
|
||||
null=True,
|
||||
verbose_name="Owner",
|
||||
blank=True,
|
||||
editable=False,
|
||||
related_name="owned_pages",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
),
|
||||
),
|
||||
(
|
||||
"locked",
|
||||
models.BooleanField(
|
||||
default=False, verbose_name="Locked", editable=False
|
||||
),
|
||||
),
|
||||
(
|
||||
"latest_revision_created_at",
|
||||
models.DateTimeField(
|
||||
null=True,
|
||||
verbose_name="Latest revision created at",
|
||||
editable=False,
|
||||
),
|
||||
),
|
||||
(
|
||||
"first_published_at",
|
||||
models.DateTimeField(
|
||||
null=True, verbose_name="First published at", editable=False
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
bases=(wagtail.search.index.Indexed, models.Model),
|
||||
),
|
||||
migrations.RunPython(set_page_path_collation, migrations.RunPython.noop),
|
||||
migrations.CreateModel(
|
||||
name="GroupPagePermission",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
verbose_name="ID",
|
||||
serialize=False,
|
||||
primary_key=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"permission_type",
|
||||
models.CharField(
|
||||
verbose_name="Permission type",
|
||||
choices=[
|
||||
("add", "Add/edit pages you own"),
|
||||
("edit", "Add/edit any page"),
|
||||
("publish", "Publish any page"),
|
||||
("lock", "Lock/unlock any page"),
|
||||
],
|
||||
max_length=20,
|
||||
),
|
||||
),
|
||||
(
|
||||
"group",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name="Group",
|
||||
related_name="page_permissions",
|
||||
to="auth.Group",
|
||||
),
|
||||
),
|
||||
(
|
||||
"page",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name="Page",
|
||||
related_name="group_permissions",
|
||||
to="wagtailcore.Page",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="grouppagepermission",
|
||||
unique_together={("group", "page", "permission_type")},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="grouppagepermission",
|
||||
options={"verbose_name": "Group Page Permission"},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="PageRevision",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
verbose_name="ID",
|
||||
serialize=False,
|
||||
primary_key=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"submitted_for_moderation",
|
||||
models.BooleanField(
|
||||
default=False, verbose_name="Submitted for moderation"
|
||||
),
|
||||
),
|
||||
("created_at", models.DateTimeField(verbose_name="Created at")),
|
||||
("content_json", models.TextField(verbose_name="Content JSON")),
|
||||
(
|
||||
"approved_go_live_at",
|
||||
models.DateTimeField(
|
||||
null=True, verbose_name="Approved go live at", blank=True
|
||||
),
|
||||
),
|
||||
(
|
||||
"page",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name="Page",
|
||||
related_name="revisions",
|
||||
to="wagtailcore.Page",
|
||||
),
|
||||
),
|
||||
(
|
||||
"user",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
null=True,
|
||||
verbose_name="User",
|
||||
blank=True,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="pagerevision",
|
||||
options={"verbose_name": "Page Revision"},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="PageViewRestriction",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
verbose_name="ID",
|
||||
serialize=False,
|
||||
primary_key=True,
|
||||
),
|
||||
),
|
||||
("password", models.CharField(verbose_name="Password", max_length=255)),
|
||||
(
|
||||
"page",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name="Page",
|
||||
related_name="view_restrictions",
|
||||
to="wagtailcore.Page",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="pageviewrestriction",
|
||||
options={"verbose_name": "Page View Restriction"},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Site",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
verbose_name="ID",
|
||||
serialize=False,
|
||||
primary_key=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"hostname",
|
||||
models.CharField(
|
||||
verbose_name="Hostname", db_index=True, max_length=255
|
||||
),
|
||||
),
|
||||
(
|
||||
"port",
|
||||
models.IntegerField(
|
||||
default=80,
|
||||
verbose_name="Port",
|
||||
help_text=(
|
||||
"Set this to something other than 80 if you need a specific port number"
|
||||
" to appear in URLs (e.g. development on port 8000)."
|
||||
" Does not affect request handling (so port forwarding still works)."
|
||||
),
|
||||
),
|
||||
),
|
||||
(
|
||||
"is_default_site",
|
||||
models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="Is default site",
|
||||
help_text=(
|
||||
"If true, this site will handle requests for all other hostnames"
|
||||
" that do not have a site entry of their own"
|
||||
),
|
||||
),
|
||||
),
|
||||
(
|
||||
"root_page",
|
||||
models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name="Root page",
|
||||
related_name="sites_rooted_here",
|
||||
to="wagtailcore.Page",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="site",
|
||||
unique_together={("hostname", "port")},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="site",
|
||||
options={"verbose_name": "Site"},
|
||||
),
|
||||
migrations.RunPython(initial_data, remove_initial_data),
|
||||
]
|
||||
109
env/lib/python3.10/site-packages/wagtail/migrations/0002_initial_data.py
vendored
Normal file
109
env/lib/python3.10/site-packages/wagtail/migrations/0002_initial_data.py
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def initial_data(apps, schema_editor):
|
||||
ContentType = apps.get_model("contenttypes.ContentType")
|
||||
Group = apps.get_model("auth.Group")
|
||||
Page = apps.get_model("wagtailcore.Page")
|
||||
Site = apps.get_model("wagtailcore.Site")
|
||||
GroupPagePermission = apps.get_model("wagtailcore.GroupPagePermission")
|
||||
|
||||
# Create page content type
|
||||
page_content_type, created = ContentType.objects.get_or_create(
|
||||
model="page", app_label="wagtailcore"
|
||||
)
|
||||
|
||||
# Create root page
|
||||
root = Page.objects.create(
|
||||
title="Root",
|
||||
slug="root",
|
||||
content_type=page_content_type,
|
||||
path="0001",
|
||||
depth=1,
|
||||
numchild=1,
|
||||
url_path="/",
|
||||
)
|
||||
|
||||
# Create homepage
|
||||
homepage = Page.objects.create(
|
||||
title="Welcome to your new Wagtail site!",
|
||||
slug="home",
|
||||
content_type=page_content_type,
|
||||
path="00010001",
|
||||
depth=2,
|
||||
numchild=0,
|
||||
url_path="/home/",
|
||||
)
|
||||
|
||||
# Create default site
|
||||
Site.objects.create(
|
||||
hostname="localhost", root_page_id=homepage.id, is_default_site=True
|
||||
)
|
||||
|
||||
# Create auth groups
|
||||
moderators_group = Group.objects.create(name="Moderators")
|
||||
editors_group = Group.objects.create(name="Editors")
|
||||
|
||||
# Create group permissions
|
||||
GroupPagePermission.objects.create(
|
||||
group=moderators_group,
|
||||
page=root,
|
||||
permission_type="add",
|
||||
)
|
||||
GroupPagePermission.objects.create(
|
||||
group=moderators_group,
|
||||
page=root,
|
||||
permission_type="edit",
|
||||
)
|
||||
GroupPagePermission.objects.create(
|
||||
group=moderators_group,
|
||||
page=root,
|
||||
permission_type="publish",
|
||||
)
|
||||
|
||||
GroupPagePermission.objects.create(
|
||||
group=editors_group,
|
||||
page=root,
|
||||
permission_type="add",
|
||||
)
|
||||
GroupPagePermission.objects.create(
|
||||
group=editors_group,
|
||||
page=root,
|
||||
permission_type="edit",
|
||||
)
|
||||
|
||||
|
||||
def remove_initial_data(apps, schema_editor):
|
||||
"""This function does nothing. The below code is commented out together
|
||||
with an explanation of why we don't need to bother reversing any of the
|
||||
initial data"""
|
||||
pass
|
||||
# This does not need to be deleted, Django takes care of it.
|
||||
# page_content_type = ContentType.objects.get(
|
||||
# model='page',
|
||||
# app_label='wagtailcore',
|
||||
# )
|
||||
|
||||
# Page objects: Do nothing, the table will be deleted when reversing 0001
|
||||
|
||||
# Do not reverse Site creation since other models might depend on it
|
||||
|
||||
# Remove auth groups -- is this safe? External objects might depend
|
||||
# on these groups... seems unsafe.
|
||||
# Group.objects.filter(
|
||||
# name__in=('Moderators', 'Editors')
|
||||
# ).delete()
|
||||
#
|
||||
# Likewise, we're leaving all GroupPagePermission unchanged as users may
|
||||
# have been assigned such permissions and its harmless to leave them.
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(initial_data, remove_initial_data),
|
||||
]
|
||||
@@ -0,0 +1,27 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0002_initial_data"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="permission_type",
|
||||
field=models.CharField(
|
||||
max_length=20,
|
||||
choices=[
|
||||
(b"add", b"Add/edit pages you own"),
|
||||
(b"edit", b"Add/edit any page"),
|
||||
(b"publish", b"Publish any page"),
|
||||
],
|
||||
),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="grouppagepermission",
|
||||
unique_together={("group", "page", "permission_type")},
|
||||
),
|
||||
]
|
||||
17
env/lib/python3.10/site-packages/wagtail/migrations/0004_page_locked.py
vendored
Normal file
17
env/lib/python3.10/site-packages/wagtail/migrations/0004_page_locked.py
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0003_add_uniqueness_constraint_on_group_page_permission"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="page",
|
||||
name="locked",
|
||||
field=models.BooleanField(default=False, editable=False),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,31 @@
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def add_page_lock_permission_to_moderators(apps, schema_editor):
|
||||
Group = apps.get_model("auth.Group")
|
||||
Page = apps.get_model("wagtailcore.Page")
|
||||
GroupPagePermission = apps.get_model("wagtailcore.GroupPagePermission")
|
||||
|
||||
root_pages = Page.objects.filter(depth=1)
|
||||
|
||||
try:
|
||||
moderators_group = Group.objects.get(name="Moderators")
|
||||
|
||||
for page in root_pages:
|
||||
GroupPagePermission.objects.create(
|
||||
group=moderators_group, page=page, permission_type="lock"
|
||||
)
|
||||
|
||||
except Group.DoesNotExist:
|
||||
pass
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0004_page_locked"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(add_page_lock_permission_to_moderators),
|
||||
]
|
||||
24
env/lib/python3.10/site-packages/wagtail/migrations/0006_add_lock_page_permission.py
vendored
Normal file
24
env/lib/python3.10/site-packages/wagtail/migrations/0006_add_lock_page_permission.py
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0005_add_page_lock_permission_to_moderators"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="permission_type",
|
||||
field=models.CharField(
|
||||
max_length=20,
|
||||
choices=[
|
||||
("add", "Add/edit pages you own"),
|
||||
("edit", "Add/edit any page"),
|
||||
("publish", "Publish any page"),
|
||||
("lock", "Lock/unlock any page"),
|
||||
],
|
||||
),
|
||||
),
|
||||
]
|
||||
17
env/lib/python3.10/site-packages/wagtail/migrations/0007_page_latest_revision_created_at.py
vendored
Normal file
17
env/lib/python3.10/site-packages/wagtail/migrations/0007_page_latest_revision_created_at.py
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0006_add_lock_page_permission"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="page",
|
||||
name="latest_revision_created_at",
|
||||
field=models.DateTimeField(editable=False, null=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
23
env/lib/python3.10/site-packages/wagtail/migrations/0008_populate_latest_revision_created_at.py
vendored
Normal file
23
env/lib/python3.10/site-packages/wagtail/migrations/0008_populate_latest_revision_created_at.py
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def populate_latest_revision_created_at(apps, schema_editor):
|
||||
Page = apps.get_model("wagtailcore.Page")
|
||||
|
||||
for page in Page.objects.all():
|
||||
latest_revision = page.revisions.order_by("-created_at").first()
|
||||
|
||||
if latest_revision is not None:
|
||||
page.latest_revision_created_at = latest_revision.created_at
|
||||
page.save(update_fields=["latest_revision_created_at"])
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0007_page_latest_revision_created_at"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(populate_latest_revision_created_at),
|
||||
]
|
||||
@@ -0,0 +1,16 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0008_populate_latest_revision_created_at"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="created_at",
|
||||
field=models.DateTimeField(),
|
||||
),
|
||||
]
|
||||
25
env/lib/python3.10/site-packages/wagtail/migrations/0010_change_page_owner_to_null_on_delete.py
vendored
Normal file
25
env/lib/python3.10/site-packages/wagtail/migrations/0010_change_page_owner_to_null_on_delete.py
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0009_remove_auto_now_add_from_pagerevision_created_at"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
related_name="owned_pages",
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
blank=True,
|
||||
editable=False,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
]
|
||||
17
env/lib/python3.10/site-packages/wagtail/migrations/0011_page_first_published_at.py
vendored
Normal file
17
env/lib/python3.10/site-packages/wagtail/migrations/0011_page_first_published_at.py
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0010_change_page_owner_to_null_on_delete"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="page",
|
||||
name="first_published_at",
|
||||
field=models.DateTimeField(editable=False, null=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
20
env/lib/python3.10/site-packages/wagtail/migrations/0012_extend_page_slug_field.py
vendored
Normal file
20
env/lib/python3.10/site-packages/wagtail/migrations/0012_extend_page_slug_field.py
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0011_page_first_published_at"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="slug",
|
||||
field=models.SlugField(
|
||||
help_text="The name of the page as it will appear in URLs e.g http://domain.com/blog/[my-slug]/",
|
||||
max_length=255,
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
33
env/lib/python3.10/site-packages/wagtail/migrations/0013_update_golive_expire_help_text.py
vendored
Normal file
33
env/lib/python3.10/site-packages/wagtail/migrations/0013_update_golive_expire_help_text.py
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0012_extend_page_slug_field"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="expire_at",
|
||||
field=models.DateTimeField(
|
||||
help_text="Please add a date-time in the form YYYY-MM-DD hh:mm.",
|
||||
null=True,
|
||||
verbose_name="Expiry date/time",
|
||||
blank=True,
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="go_live_at",
|
||||
field=models.DateTimeField(
|
||||
help_text="Please add a date-time in the form YYYY-MM-DD hh:mm.",
|
||||
null=True,
|
||||
verbose_name="Go live date/time",
|
||||
blank=True,
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
143
env/lib/python3.10/site-packages/wagtail/migrations/0014_add_verbose_name.py
vendored
Normal file
143
env/lib/python3.10/site-packages/wagtail/migrations/0014_add_verbose_name.py
vendored
Normal file
@@ -0,0 +1,143 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0013_update_golive_expire_help_text"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="group",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name="Group",
|
||||
related_name="page_permissions",
|
||||
to="auth.Group",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="page",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name="Page",
|
||||
related_name="group_permissions",
|
||||
to="wagtailcore.Page",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="permission_type",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("add", "Add/edit pages you own"),
|
||||
("edit", "Add/edit any page"),
|
||||
("publish", "Publish any page"),
|
||||
("lock", "Lock/unlock any page"),
|
||||
],
|
||||
max_length=20,
|
||||
verbose_name="Permission type",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="search_description",
|
||||
field=models.TextField(blank=True, verbose_name="Search description"),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="show_in_menus",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
help_text="Whether a link to this page will appear in automatically generated menus",
|
||||
verbose_name="Show in menus",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="slug",
|
||||
field=models.SlugField(
|
||||
help_text="The name of the page as it will appear in URLs e.g http://domain.com/blog/[my-slug]/",
|
||||
max_length=255,
|
||||
verbose_name="Slug",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="title",
|
||||
field=models.CharField(
|
||||
help_text="The page title as you'd like it to be seen by the public",
|
||||
max_length=255,
|
||||
verbose_name="Title",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pageviewrestriction",
|
||||
name="page",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name="Page",
|
||||
related_name="view_restrictions",
|
||||
to="wagtailcore.Page",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pageviewrestriction",
|
||||
name="password",
|
||||
field=models.CharField(max_length=255, verbose_name="Password"),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="site",
|
||||
name="hostname",
|
||||
field=models.CharField(
|
||||
db_index=True, max_length=255, verbose_name="Hostname"
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="site",
|
||||
name="is_default_site",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
help_text="If true, this site will handle requests for all other hostnames"
|
||||
" that do not have a site entry of their own",
|
||||
verbose_name="Is default site",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="site",
|
||||
name="port",
|
||||
field=models.IntegerField(
|
||||
default=80,
|
||||
help_text="Set this to something other than 80 if you need a specific port number"
|
||||
" to appear in URLs (e.g. development on port 8000). Does not affect request handling"
|
||||
" (so port forwarding still works).",
|
||||
verbose_name="Port",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="site",
|
||||
name="root_page",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name="Root page",
|
||||
related_name="sites_rooted_here",
|
||||
to="wagtailcore.Page",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
146
env/lib/python3.10/site-packages/wagtail/migrations/0015_add_more_verbose_names.py
vendored
Normal file
146
env/lib/python3.10/site-packages/wagtail/migrations/0015_add_more_verbose_names.py
vendored
Normal file
@@ -0,0 +1,146 @@
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0014_add_verbose_name"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name="grouppagepermission",
|
||||
options={"verbose_name": "Group Page Permission"},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="pagerevision",
|
||||
options={"verbose_name": "Page Revision"},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="pageviewrestriction",
|
||||
options={"verbose_name": "Page View Restriction"},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="site",
|
||||
options={"verbose_name": "Site"},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="content_type",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
related_name="pages",
|
||||
verbose_name="Content type",
|
||||
to="contenttypes.ContentType",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="expired",
|
||||
field=models.BooleanField(
|
||||
default=False, verbose_name="Expired", editable=False
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="first_published_at",
|
||||
field=models.DateTimeField(
|
||||
verbose_name="First published at", null=True, editable=False
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="has_unpublished_changes",
|
||||
field=models.BooleanField(
|
||||
default=False, verbose_name="Has unpublished changes", editable=False
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="latest_revision_created_at",
|
||||
field=models.DateTimeField(
|
||||
verbose_name="Latest revision created at", null=True, editable=False
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="live",
|
||||
field=models.BooleanField(
|
||||
default=True, verbose_name="Live", editable=False
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="locked",
|
||||
field=models.BooleanField(
|
||||
default=False, verbose_name="Locked", editable=False
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
related_name="owned_pages",
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
blank=True,
|
||||
editable=False,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
null=True,
|
||||
verbose_name="Owner",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="url_path",
|
||||
field=models.CharField(
|
||||
verbose_name="URL path", max_length=255, editable=False, blank=True
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="approved_go_live_at",
|
||||
field=models.DateTimeField(
|
||||
null=True, verbose_name="Approved go live at", blank=True
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="content_json",
|
||||
field=models.TextField(verbose_name="Content JSON"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="created_at",
|
||||
field=models.DateTimeField(verbose_name="Created at"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="page",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
related_name="revisions",
|
||||
verbose_name="Page",
|
||||
to="wagtailcore.Page",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="submitted_for_moderation",
|
||||
field=models.BooleanField(
|
||||
default=False, verbose_name="Submitted for moderation"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="user",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name="User",
|
||||
blank=True,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
]
|
||||
17
env/lib/python3.10/site-packages/wagtail/migrations/0016_change_page_url_path_to_text_field.py
vendored
Normal file
17
env/lib/python3.10/site-packages/wagtail/migrations/0016_change_page_url_path_to_text_field.py
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0015_add_more_verbose_names"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="url_path",
|
||||
field=models.TextField(verbose_name="URL path", editable=False, blank=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,26 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0016_change_page_url_path_to_text_field"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="permission_type",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("add", "Add/edit pages you own"),
|
||||
("edit", "Edit any page"),
|
||||
("publish", "Publish any page"),
|
||||
("lock", "Lock/unlock any page"),
|
||||
],
|
||||
max_length=20,
|
||||
verbose_name="Permission type",
|
||||
),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0017_change_edit_page_permission_description"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="submitted_for_moderation",
|
||||
field=models.BooleanField(
|
||||
default=False, db_index=True, verbose_name="Submitted for moderation"
|
||||
),
|
||||
),
|
||||
]
|
||||
40
env/lib/python3.10/site-packages/wagtail/migrations/0019_verbose_names_cleanup.py
vendored
Normal file
40
env/lib/python3.10/site-packages/wagtail/migrations/0019_verbose_names_cleanup.py
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0018_pagerevision_submitted_for_moderation_index"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name="grouppagepermission",
|
||||
options={
|
||||
"verbose_name": "group page permission",
|
||||
"verbose_name_plural": "group page permissions",
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="page",
|
||||
options={"verbose_name": "page", "verbose_name_plural": "pages"},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="pagerevision",
|
||||
options={
|
||||
"verbose_name": "page revision",
|
||||
"verbose_name_plural": "page revisions",
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="pageviewrestriction",
|
||||
options={
|
||||
"verbose_name": "page view restriction",
|
||||
"verbose_name_plural": "page view restrictions",
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="site",
|
||||
options={"verbose_name": "site", "verbose_name_plural": "sites"},
|
||||
),
|
||||
]
|
||||
21
env/lib/python3.10/site-packages/wagtail/migrations/0020_add_index_on_page_first_published_at.py
vendored
Normal file
21
env/lib/python3.10/site-packages/wagtail/migrations/0020_add_index_on_page_first_published_at.py
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0019_verbose_names_cleanup"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="first_published_at",
|
||||
field=models.DateTimeField(
|
||||
editable=False,
|
||||
null=True,
|
||||
verbose_name="First published at",
|
||||
db_index=True,
|
||||
),
|
||||
),
|
||||
]
|
||||
272
env/lib/python3.10/site-packages/wagtail/migrations/0021_capitalizeverbose.py
vendored
Normal file
272
env/lib/python3.10/site-packages/wagtail/migrations/0021_capitalizeverbose.py
vendored
Normal file
@@ -0,0 +1,272 @@
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0020_add_index_on_page_first_published_at"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="group",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
related_name="page_permissions",
|
||||
to="auth.Group",
|
||||
verbose_name="group",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="page",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
related_name="group_permissions",
|
||||
to="wagtailcore.Page",
|
||||
verbose_name="page",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="permission_type",
|
||||
field=models.CharField(
|
||||
max_length=20,
|
||||
verbose_name="permission type",
|
||||
choices=[
|
||||
("add", "Add/edit pages you own"),
|
||||
("edit", "Edit any page"),
|
||||
("publish", "Publish any page"),
|
||||
("lock", "Lock/unlock any page"),
|
||||
],
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="content_type",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
related_name="pages",
|
||||
to="contenttypes.ContentType",
|
||||
verbose_name="content type",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="expire_at",
|
||||
field=models.DateTimeField(
|
||||
null=True,
|
||||
blank=True,
|
||||
help_text="Please add a date-time in the form YYYY-MM-DD hh:mm.",
|
||||
verbose_name="expiry date/time",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="expired",
|
||||
field=models.BooleanField(
|
||||
default=False, editable=False, verbose_name="expired"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="first_published_at",
|
||||
field=models.DateTimeField(
|
||||
null=True,
|
||||
db_index=True,
|
||||
editable=False,
|
||||
verbose_name="first published at",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="go_live_at",
|
||||
field=models.DateTimeField(
|
||||
null=True,
|
||||
blank=True,
|
||||
help_text="Please add a date-time in the form YYYY-MM-DD hh:mm.",
|
||||
verbose_name="go live date/time",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="has_unpublished_changes",
|
||||
field=models.BooleanField(
|
||||
default=False, editable=False, verbose_name="has unpublished changes"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="latest_revision_created_at",
|
||||
field=models.DateTimeField(
|
||||
null=True, editable=False, verbose_name="latest revision created at"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="live",
|
||||
field=models.BooleanField(
|
||||
default=True, editable=False, verbose_name="live"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="locked",
|
||||
field=models.BooleanField(
|
||||
default=False, editable=False, verbose_name="locked"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="owned_pages",
|
||||
null=True,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
editable=False,
|
||||
verbose_name="owner",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="search_description",
|
||||
field=models.TextField(blank=True, verbose_name="search description"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="seo_title",
|
||||
field=models.CharField(
|
||||
max_length=255,
|
||||
blank=True,
|
||||
help_text="Optional. 'Search Engine Friendly' title. This will appear at the top of the browser window.",
|
||||
verbose_name="page title",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="show_in_menus",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
help_text="Whether a link to this page will appear in automatically generated menus",
|
||||
verbose_name="show in menus",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="slug",
|
||||
field=models.SlugField(
|
||||
max_length=255,
|
||||
verbose_name="slug",
|
||||
help_text="The name of the page as it will appear in URLs e.g http://domain.com/blog/[my-slug]/",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="title",
|
||||
field=models.CharField(
|
||||
max_length=255,
|
||||
help_text="The page title as you'd like it to be seen by the public",
|
||||
verbose_name="title",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="approved_go_live_at",
|
||||
field=models.DateTimeField(
|
||||
null=True, blank=True, verbose_name="approved go live at"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="content_json",
|
||||
field=models.TextField(verbose_name="content JSON"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="created_at",
|
||||
field=models.DateTimeField(verbose_name="created at"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="page",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
related_name="revisions",
|
||||
to="wagtailcore.Page",
|
||||
verbose_name="page",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="submitted_for_moderation",
|
||||
field=models.BooleanField(
|
||||
default=False, db_index=True, verbose_name="submitted for moderation"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="user",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
blank=True,
|
||||
null=True,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
verbose_name="user",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pageviewrestriction",
|
||||
name="page",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
related_name="view_restrictions",
|
||||
to="wagtailcore.Page",
|
||||
verbose_name="page",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pageviewrestriction",
|
||||
name="password",
|
||||
field=models.CharField(max_length=255, verbose_name="password"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="site",
|
||||
name="hostname",
|
||||
field=models.CharField(
|
||||
max_length=255, db_index=True, verbose_name="hostname"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="site",
|
||||
name="is_default_site",
|
||||
field=models.BooleanField(
|
||||
default=False,
|
||||
help_text="If true, this site will handle requests for all other hostnames that do not have a site entry of their own",
|
||||
verbose_name="is default site",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="site",
|
||||
name="port",
|
||||
field=models.IntegerField(
|
||||
default=80,
|
||||
help_text="Set this to something other than 80 if you need a specific port number to appear in URLs (e.g. development on port 8000). Does not affect request handling (so port forwarding still works).",
|
||||
verbose_name="port",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="site",
|
||||
name="root_page",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.CASCADE,
|
||||
related_name="sites_rooted_here",
|
||||
to="wagtailcore.Page",
|
||||
verbose_name="root page",
|
||||
),
|
||||
),
|
||||
]
|
||||
22
env/lib/python3.10/site-packages/wagtail/migrations/0022_add_site_name.py
vendored
Normal file
22
env/lib/python3.10/site-packages/wagtail/migrations/0022_add_site_name.py
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0021_capitalizeverbose"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="site_name",
|
||||
field=models.CharField(
|
||||
verbose_name="site name",
|
||||
null=True,
|
||||
blank=True,
|
||||
max_length=255,
|
||||
help_text="Human-readable name for the site.",
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,24 @@
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0022_add_site_name"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="user",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
verbose_name="user",
|
||||
blank=True,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,24 @@
|
||||
# Generated by Django 1.9 on 2015-12-22 09:34
|
||||
from django.db import migrations, models
|
||||
|
||||
import wagtail.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0023_alter_page_revision_on_delete_behaviour"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="content_type",
|
||||
field=models.ForeignKey(
|
||||
on_delete=models.SET(wagtail.models.get_default_page_content_type),
|
||||
related_name="pages",
|
||||
to="contenttypes.ContentType",
|
||||
verbose_name="content type",
|
||||
),
|
||||
),
|
||||
]
|
||||
34
env/lib/python3.10/site-packages/wagtail/migrations/0024_collection.py
vendored
Normal file
34
env/lib/python3.10/site-packages/wagtail/migrations/0024_collection.py
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0023_alter_page_revision_on_delete_behaviour"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Collection",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
verbose_name="ID",
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
),
|
||||
),
|
||||
("path", models.CharField(max_length=255, unique=True)),
|
||||
("depth", models.PositiveIntegerField()),
|
||||
("numchild", models.PositiveIntegerField(default=0)),
|
||||
("name", models.CharField(max_length=255, verbose_name="name")),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "collection",
|
||||
"verbose_name_plural": "collections",
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
]
|
||||
24
env/lib/python3.10/site-packages/wagtail/migrations/0025_collection_initial_data.py
vendored
Normal file
24
env/lib/python3.10/site-packages/wagtail/migrations/0025_collection_initial_data.py
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def initial_data(apps, schema_editor):
|
||||
Collection = apps.get_model("wagtailcore.Collection")
|
||||
|
||||
# Create root page
|
||||
Collection.objects.create(
|
||||
name="Root",
|
||||
path="0001",
|
||||
depth=1,
|
||||
numchild=0,
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0024_collection"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(initial_data, migrations.RunPython.noop),
|
||||
]
|
||||
60
env/lib/python3.10/site-packages/wagtail/migrations/0026_group_collection_permission.py
vendored
Normal file
60
env/lib/python3.10/site-packages/wagtail/migrations/0026_group_collection_permission.py
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("auth", "0001_initial"),
|
||||
("wagtailcore", "0025_collection_initial_data"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="GroupCollectionPermission",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
serialize=False,
|
||||
primary_key=True,
|
||||
auto_created=True,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"collection",
|
||||
models.ForeignKey(
|
||||
related_name="group_permissions",
|
||||
verbose_name="collection",
|
||||
to="wagtailcore.Collection",
|
||||
on_delete=models.CASCADE,
|
||||
),
|
||||
),
|
||||
(
|
||||
"group",
|
||||
models.ForeignKey(
|
||||
related_name="collection_permissions",
|
||||
verbose_name="group",
|
||||
to="auth.Group",
|
||||
on_delete=models.CASCADE,
|
||||
),
|
||||
),
|
||||
(
|
||||
"permission",
|
||||
models.ForeignKey(
|
||||
to="auth.Permission",
|
||||
verbose_name="permission",
|
||||
on_delete=models.CASCADE,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "group collection permission",
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="groupcollectionpermission",
|
||||
unique_together={("group", "collection", "permission")},
|
||||
),
|
||||
]
|
||||
28
env/lib/python3.10/site-packages/wagtail/migrations/0027_fix_collection_path_collation.py
vendored
Normal file
28
env/lib/python3.10/site-packages/wagtail/migrations/0027_fix_collection_path_collation.py
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def set_collection_path_collation(apps, schema_editor):
|
||||
"""
|
||||
Treebeard's path comparison logic can fail on certain locales such as sk_SK, which
|
||||
sort numbers after letters. To avoid this, we explicitly set the collation for the
|
||||
'path' column to the (non-locale-specific) 'C' collation.
|
||||
|
||||
See: https://groups.google.com/d/msg/wagtail/q0leyuCnYWI/I9uDvVlyBAAJ
|
||||
"""
|
||||
if schema_editor.connection.vendor == "postgresql":
|
||||
schema_editor.execute(
|
||||
"""
|
||||
ALTER TABLE wagtailcore_collection ALTER COLUMN path TYPE VARCHAR(255) COLLATE "C"
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0026_group_collection_permission"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(set_collection_path_collation, migrations.RunPython.noop),
|
||||
]
|
||||
12
env/lib/python3.10/site-packages/wagtail/migrations/0028_merge.py
vendored
Normal file
12
env/lib/python3.10/site-packages/wagtail/migrations/0028_merge.py
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
# Generated by Django 1.9.1 on 2016-02-03 13:50
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0024_alter_page_content_type_on_delete_behaviour"),
|
||||
("wagtailcore", "0027_fix_collection_path_collation"),
|
||||
]
|
||||
|
||||
operations = []
|
||||
22
env/lib/python3.10/site-packages/wagtail/migrations/0029_unicode_slugfield_dj19.py
vendored
Normal file
22
env/lib/python3.10/site-packages/wagtail/migrations/0029_unicode_slugfield_dj19.py
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
# Generated by Django 1.9.4 on 2016-04-27 22:39
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0028_merge"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="slug",
|
||||
field=models.SlugField(
|
||||
allow_unicode=True,
|
||||
help_text="The name of the page as it will appear in URLs e.g http://domain.com/blog/[my-slug]/",
|
||||
max_length=255,
|
||||
verbose_name="slug",
|
||||
),
|
||||
),
|
||||
]
|
||||
16
env/lib/python3.10/site-packages/wagtail/migrations/0030_index_on_pagerevision_created_at.py
vendored
Normal file
16
env/lib/python3.10/site-packages/wagtail/migrations/0030_index_on_pagerevision_created_at.py
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0029_unicode_slugfield_dj19"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="created_at",
|
||||
field=models.DateTimeField(db_index=True, verbose_name="created at"),
|
||||
),
|
||||
]
|
||||
38
env/lib/python3.10/site-packages/wagtail/migrations/0031_add_page_view_restriction_types.py
vendored
Normal file
38
env/lib/python3.10/site-packages/wagtail/migrations/0031_add_page_view_restriction_types.py
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
# Generated by Django 1.10.2 on 2016-10-07 15:33
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("auth", "0001_initial"),
|
||||
("wagtailcore", "0030_index_on_pagerevision_created_at"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="pageviewrestriction",
|
||||
name="groups",
|
||||
field=models.ManyToManyField(blank=True, to="auth.Group"),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="pageviewrestriction",
|
||||
name="restriction_type",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("none", "Public"),
|
||||
("login", "Private, accessible to logged-in users"),
|
||||
("password", "Private, accessible with the following password"),
|
||||
("groups", "Private, accessible to users in specific groups"),
|
||||
],
|
||||
default="password",
|
||||
max_length=20,
|
||||
),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pageviewrestriction",
|
||||
name="password",
|
||||
field=models.CharField(blank=True, max_length=255, verbose_name="password"),
|
||||
),
|
||||
]
|
||||
27
env/lib/python3.10/site-packages/wagtail/migrations/0032_add_bulk_delete_page_permission.py
vendored
Normal file
27
env/lib/python3.10/site-packages/wagtail/migrations/0032_add_bulk_delete_page_permission.py
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
# Generated by Django 1.10.1 on 2016-09-27 14:11
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0031_add_page_view_restriction_types"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="permission_type",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("add", "Add/edit pages you own"),
|
||||
("edit", "Edit any page"),
|
||||
("publish", "Publish any page"),
|
||||
("bulk_delete", "Delete pages with children"),
|
||||
("lock", "Lock/unlock any page"),
|
||||
],
|
||||
max_length=20,
|
||||
verbose_name="permission type",
|
||||
),
|
||||
),
|
||||
]
|
||||
26
env/lib/python3.10/site-packages/wagtail/migrations/0033_remove_golive_expiry_help_text.py
vendored
Normal file
26
env/lib/python3.10/site-packages/wagtail/migrations/0033_remove_golive_expiry_help_text.py
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 1.10.6 on 2017-03-31 14:33
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0032_add_bulk_delete_page_permission"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="expire_at",
|
||||
field=models.DateTimeField(
|
||||
blank=True, null=True, verbose_name="expiry date/time"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="go_live_at",
|
||||
field=models.DateTimeField(
|
||||
blank=True, null=True, verbose_name="go live date/time"
|
||||
),
|
||||
),
|
||||
]
|
||||
26
env/lib/python3.10/site-packages/wagtail/migrations/0034_page_live_revision.py
vendored
Normal file
26
env/lib/python3.10/site-packages/wagtail/migrations/0034_page_live_revision.py
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 1.10.4 on 2017-01-26 21:32
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0033_remove_golive_expiry_help_text"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="page",
|
||||
name="live_revision",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="+",
|
||||
to="wagtailcore.PageRevision",
|
||||
verbose_name="live revision",
|
||||
),
|
||||
),
|
||||
]
|
||||
19
env/lib/python3.10/site-packages/wagtail/migrations/0035_page_last_published_at.py
vendored
Normal file
19
env/lib/python3.10/site-packages/wagtail/migrations/0035_page_last_published_at.py
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 1.11.1 on 2017-05-22 13:35
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0034_page_live_revision"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="page",
|
||||
name="last_published_at",
|
||||
field=models.DateTimeField(
|
||||
editable=False, null=True, verbose_name="last published at"
|
||||
),
|
||||
),
|
||||
]
|
||||
21
env/lib/python3.10/site-packages/wagtail/migrations/0036_populate_page_last_published_at.py
vendored
Normal file
21
env/lib/python3.10/site-packages/wagtail/migrations/0036_populate_page_last_published_at.py
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# Generated by Django 1.11.1 on 2017-06-01 11:03
|
||||
from django.db import migrations
|
||||
from django.db.models import F
|
||||
|
||||
|
||||
def forwards_func(apps, schema_editor):
|
||||
Page = apps.get_model("wagtailcore", "Page")
|
||||
Page.objects.filter(has_unpublished_changes=False).update(
|
||||
last_published_at=F("latest_revision_created_at")
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0035_page_last_published_at"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(forwards_func, migrations.RunPython.noop),
|
||||
]
|
||||
26
env/lib/python3.10/site-packages/wagtail/migrations/0037_set_page_owner_editable.py
vendored
Normal file
26
env/lib/python3.10/site-packages/wagtail/migrations/0037_set_page_owner_editable.py
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 1.10.7 on 2017-05-03 12:05
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0036_populate_page_last_published_at"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="owned_pages",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
verbose_name="owner",
|
||||
),
|
||||
),
|
||||
]
|
||||
19
env/lib/python3.10/site-packages/wagtail/migrations/0038_make_first_published_at_editable.py
vendored
Normal file
19
env/lib/python3.10/site-packages/wagtail/migrations/0038_make_first_published_at_editable.py
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 1.10.6 on 2017-03-24 09:12
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0037_set_page_owner_editable"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="first_published_at",
|
||||
field=models.DateTimeField(
|
||||
blank=True, db_index=True, null=True, verbose_name="first published at"
|
||||
),
|
||||
),
|
||||
]
|
||||
77
env/lib/python3.10/site-packages/wagtail/migrations/0039_collectionviewrestriction.py
vendored
Normal file
77
env/lib/python3.10/site-packages/wagtail/migrations/0039_collectionviewrestriction.py
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
# Generated by Django 1.10.4 on 2016-12-19 15:32
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0038_make_first_published_at_editable"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="CollectionViewRestriction",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"restriction_type",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("none", "Public"),
|
||||
("login", "Private, accessible to logged-in users"),
|
||||
(
|
||||
"password",
|
||||
"Private, accessible with the following password",
|
||||
),
|
||||
(
|
||||
"groups",
|
||||
"Private, accessible to users in specific groups",
|
||||
),
|
||||
],
|
||||
max_length=20,
|
||||
),
|
||||
),
|
||||
(
|
||||
"password",
|
||||
models.CharField(
|
||||
blank=True, max_length=255, verbose_name="password"
|
||||
),
|
||||
),
|
||||
(
|
||||
"collection",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="view_restrictions",
|
||||
to="wagtailcore.Collection",
|
||||
verbose_name="collection",
|
||||
),
|
||||
),
|
||||
(
|
||||
"groups",
|
||||
models.ManyToManyField(
|
||||
blank=True, to="auth.Group", verbose_name="groups"
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "collection view restriction",
|
||||
"verbose_name_plural": "collection view restrictions",
|
||||
},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pageviewrestriction",
|
||||
name="groups",
|
||||
field=models.ManyToManyField(
|
||||
blank=True, to="auth.Group", verbose_name="groups"
|
||||
),
|
||||
),
|
||||
]
|
||||
26
env/lib/python3.10/site-packages/wagtail/migrations/0040_page_draft_title.py
vendored
Normal file
26
env/lib/python3.10/site-packages/wagtail/migrations/0040_page_draft_title.py
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 1.10.2 on 2017-01-20 15:34
|
||||
from django.db import migrations, models
|
||||
from django.db.models import F
|
||||
|
||||
|
||||
def draft_title(apps, schema_editor):
|
||||
Page = apps.get_model("wagtailcore", "Page")
|
||||
|
||||
Page.objects.all().update(draft_title=F("title"))
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0039_collectionviewrestriction"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="page",
|
||||
name="draft_title",
|
||||
field=models.CharField(default="", editable=False, max_length=255),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.RunPython(draft_title, migrations.RunPython.noop),
|
||||
]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Generated by Django 2.2.dev20181026000358 on 2018-10-27 09:42
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0040_page_draft_title"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name="groupcollectionpermission",
|
||||
options={
|
||||
"verbose_name": "group collection permission",
|
||||
"verbose_name_plural": "group collection permissions",
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Generated by Django 2.2.7 on 2019-11-29 10:46
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0041_group_collection_permissions_verbose_name_plural"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="approved_go_live_at",
|
||||
field=models.DateTimeField(
|
||||
blank=True, db_index=True, null=True, verbose_name="approved go live at"
|
||||
),
|
||||
),
|
||||
]
|
||||
36
env/lib/python3.10/site-packages/wagtail/migrations/0043_lock_fields.py
vendored
Normal file
36
env/lib/python3.10/site-packages/wagtail/migrations/0043_lock_fields.py
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
# Generated by Django 2.2.6 on 2019-10-16 08:30
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("wagtailcore", "0042_index_on_pagerevision_approved_go_live_at"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="page",
|
||||
name="locked_at",
|
||||
field=models.DateTimeField(
|
||||
editable=False, null=True, verbose_name="locked at"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="page",
|
||||
name="locked_by",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="locked_%(class)ss",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
verbose_name="locked by",
|
||||
),
|
||||
),
|
||||
]
|
||||
29
env/lib/python3.10/site-packages/wagtail/migrations/0044_add_unlock_grouppagepermission.py
vendored
Normal file
29
env/lib/python3.10/site-packages/wagtail/migrations/0044_add_unlock_grouppagepermission.py
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
# Generated by Django 2.1.13 on 2019-10-17 13:24
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0043_lock_fields"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="permission_type",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("add", "Add/edit pages you own"),
|
||||
("edit", "Edit any page"),
|
||||
("publish", "Publish any page"),
|
||||
("bulk_delete", "Delete pages with children"),
|
||||
("lock", "Lock/unlock pages you've locked"),
|
||||
("unlock", "Unlock any page"),
|
||||
],
|
||||
max_length=20,
|
||||
verbose_name="permission type",
|
||||
),
|
||||
),
|
||||
]
|
||||
28
env/lib/python3.10/site-packages/wagtail/migrations/0045_assign_unlock_grouppagepermission.py
vendored
Normal file
28
env/lib/python3.10/site-packages/wagtail/migrations/0045_assign_unlock_grouppagepermission.py
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
# Generated by Django 2.1.13 on 2019-10-17 13:25
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def assign_unlock_grouppagepermission(apps, schema_editor):
|
||||
# Assign Unlock permission to all groups that currently have the lock permission
|
||||
GroupPagePermission = apps.get_model("wagtailcore.GroupPagePermission")
|
||||
|
||||
for lock_permission in GroupPagePermission.objects.filter(permission_type="lock"):
|
||||
GroupPagePermission.objects.create(
|
||||
group=lock_permission.group,
|
||||
page=lock_permission.page,
|
||||
permission_type="unlock",
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0044_add_unlock_grouppagepermission"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
assign_unlock_grouppagepermission, migrations.RunPython.noop
|
||||
)
|
||||
]
|
||||
25
env/lib/python3.10/site-packages/wagtail/migrations/0046_site_name_remove_null.py
vendored
Normal file
25
env/lib/python3.10/site-packages/wagtail/migrations/0046_site_name_remove_null.py
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
# Generated by Django 3.0.6 on 2020-05-27 15:15
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0045_assign_unlock_grouppagepermission"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="site",
|
||||
name="site_name",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
default="",
|
||||
help_text="Human-readable name for the site.",
|
||||
max_length=255,
|
||||
verbose_name="site name",
|
||||
),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
347
env/lib/python3.10/site-packages/wagtail/migrations/0047_add_workflow_models.py
vendored
Normal file
347
env/lib/python3.10/site-packages/wagtail/migrations/0047_add_workflow_models.py
vendored
Normal file
@@ -0,0 +1,347 @@
|
||||
# Generated by Django 3.0.3 on 2020-03-03 15:26
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import modelcluster.fields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
("wagtailcore", "0046_site_name_remove_null"),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("auth", "0011_update_proxy_permissions"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Task",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("name", models.CharField(max_length=255, verbose_name="name")),
|
||||
(
|
||||
"active",
|
||||
models.BooleanField(
|
||||
default=True,
|
||||
help_text="Active tasks can be added to workflows. Deactivating a task does not remove it from existing workflows.",
|
||||
verbose_name="active",
|
||||
),
|
||||
),
|
||||
(
|
||||
"content_type",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="wagtail_tasks",
|
||||
to="contenttypes.ContentType",
|
||||
verbose_name="content type",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "task",
|
||||
"verbose_name_plural": "tasks",
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="TaskState",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"status",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("in_progress", "In progress"),
|
||||
("approved", "Approved"),
|
||||
("rejected", "Rejected"),
|
||||
("skipped", "Skipped"),
|
||||
("cancelled", "Cancelled"),
|
||||
],
|
||||
default="in_progress",
|
||||
max_length=50,
|
||||
verbose_name="status",
|
||||
),
|
||||
),
|
||||
(
|
||||
"started_at",
|
||||
models.DateTimeField(auto_now_add=True, verbose_name="started at"),
|
||||
),
|
||||
(
|
||||
"finished_at",
|
||||
models.DateTimeField(
|
||||
blank=True, null=True, verbose_name="finished at"
|
||||
),
|
||||
),
|
||||
(
|
||||
"content_type",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="wagtail_task_states",
|
||||
to="contenttypes.ContentType",
|
||||
verbose_name="content type",
|
||||
),
|
||||
),
|
||||
(
|
||||
"page_revision",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="task_states",
|
||||
to="wagtailcore.PageRevision",
|
||||
verbose_name="revision",
|
||||
),
|
||||
),
|
||||
(
|
||||
"task",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="task_states",
|
||||
to="wagtailcore.Task",
|
||||
verbose_name="task",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Task state",
|
||||
"verbose_name_plural": "Task states",
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Workflow",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("name", models.CharField(max_length=255, verbose_name="name")),
|
||||
(
|
||||
"active",
|
||||
models.BooleanField(
|
||||
default=True,
|
||||
help_text="Active workflows can be added to pages/snippets. Deactivating a workflow does not remove it from existing pages/snippets.",
|
||||
verbose_name="active",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "workflow",
|
||||
"verbose_name_plural": "workflows",
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="GroupApprovalTask",
|
||||
fields=[
|
||||
(
|
||||
"task_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="wagtailcore.Task",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Group approval task",
|
||||
"verbose_name_plural": "Group approval tasks",
|
||||
},
|
||||
bases=("wagtailcore.task",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="WorkflowState",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"status",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("in_progress", "In progress"),
|
||||
("approved", "Approved"),
|
||||
("rejected", "Rejected"),
|
||||
("cancelled", "Cancelled"),
|
||||
],
|
||||
default="in_progress",
|
||||
max_length=50,
|
||||
verbose_name="status",
|
||||
),
|
||||
),
|
||||
(
|
||||
"created_at",
|
||||
models.DateTimeField(auto_now_add=True, verbose_name="created at"),
|
||||
),
|
||||
(
|
||||
"current_task_state",
|
||||
models.OneToOneField(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
to="wagtailcore.TaskState",
|
||||
verbose_name="current task state",
|
||||
),
|
||||
),
|
||||
(
|
||||
"page",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="workflow_states",
|
||||
to="wagtailcore.Page",
|
||||
verbose_name="page",
|
||||
),
|
||||
),
|
||||
(
|
||||
"requested_by",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="requested_workflows",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
verbose_name="requested by",
|
||||
),
|
||||
),
|
||||
(
|
||||
"workflow",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="workflow_states",
|
||||
to="wagtailcore.Workflow",
|
||||
verbose_name="workflow",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Workflow state",
|
||||
"verbose_name_plural": "Workflow states",
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="WorkflowPage",
|
||||
fields=[
|
||||
(
|
||||
"page",
|
||||
models.OneToOneField(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="wagtailcore.Page",
|
||||
verbose_name="page",
|
||||
),
|
||||
),
|
||||
(
|
||||
"workflow",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="workflow_pages",
|
||||
to="wagtailcore.Workflow",
|
||||
verbose_name="workflow",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "workflow page",
|
||||
"verbose_name_plural": "workflow pages",
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="taskstate",
|
||||
name="workflow_state",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="task_states",
|
||||
to="wagtailcore.WorkflowState",
|
||||
verbose_name="workflow state",
|
||||
),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="WorkflowTask",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"sort_order",
|
||||
models.IntegerField(blank=True, editable=False, null=True),
|
||||
),
|
||||
(
|
||||
"task",
|
||||
models.ForeignKey(
|
||||
limit_choices_to={"active": True},
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="workflow_tasks",
|
||||
to="wagtailcore.Task",
|
||||
verbose_name="task",
|
||||
),
|
||||
),
|
||||
(
|
||||
"workflow",
|
||||
modelcluster.fields.ParentalKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="workflow_tasks",
|
||||
to="wagtailcore.Workflow",
|
||||
verbose_name="workflow_tasks",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "workflow task order",
|
||||
"verbose_name_plural": "workflow task orders",
|
||||
"ordering": ["sort_order"],
|
||||
"abstract": False,
|
||||
"unique_together": {("workflow", "task")},
|
||||
},
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="workflowstate",
|
||||
constraint=models.UniqueConstraint(
|
||||
condition=models.Q(status="in_progress"),
|
||||
fields=("page",),
|
||||
name="unique_in_progress_workflow",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="groupapprovaltask",
|
||||
name="groups",
|
||||
field=models.ManyToManyField(
|
||||
help_text="Pages/snippets at this step in a workflow will be moderated or approved by these groups of users",
|
||||
to="auth.Group",
|
||||
verbose_name="groups",
|
||||
),
|
||||
),
|
||||
]
|
||||
95
env/lib/python3.10/site-packages/wagtail/migrations/0048_add_default_workflows.py
vendored
Normal file
95
env/lib/python3.10/site-packages/wagtail/migrations/0048_add_default_workflows.py
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
from django.db import migrations
|
||||
from django.db.models import Count, Q
|
||||
from wagtail.models import Page as RealPage
|
||||
|
||||
|
||||
def ancestor_of_q(page):
|
||||
paths = [page.path[0:pos] for pos in range(0, len(page.path) + 1, page.steplen)[1:]]
|
||||
q = Q(path__in=paths)
|
||||
|
||||
return q
|
||||
|
||||
|
||||
def create_default_workflows(apps, schema_editor):
|
||||
# This will recreate the existing publish-permission based moderation setup in the new workflow system, by creating new workflows
|
||||
|
||||
# Get models
|
||||
ContentType = apps.get_model("contenttypes.ContentType")
|
||||
Workflow = apps.get_model("wagtailcore.Workflow")
|
||||
GroupApprovalTask = apps.get_model("wagtailcore.GroupApprovalTask")
|
||||
GroupPagePermission = apps.get_model("wagtailcore.GroupPagePermission")
|
||||
WorkflowPage = apps.get_model("wagtailcore.WorkflowPage")
|
||||
WorkflowTask = apps.get_model("wagtailcore.WorkflowTask")
|
||||
Page = apps.get_model("wagtailcore.Page")
|
||||
Group = apps.get_model("auth.Group")
|
||||
|
||||
# Get this from real page model just in case it has been overridden
|
||||
Page.steplen = RealPage.steplen
|
||||
|
||||
# Create content type for GroupApprovalTask model
|
||||
group_approval_content_type, __ = ContentType.objects.get_or_create(
|
||||
model="groupapprovaltask", app_label="wagtailcore"
|
||||
)
|
||||
|
||||
publish_permissions = GroupPagePermission.objects.filter(permission_type="publish")
|
||||
|
||||
for permission in publish_permissions:
|
||||
# find groups with publish permission over this page or its ancestors (and therefore this page by descent)
|
||||
page = permission.page
|
||||
page = Page.objects.get(pk=page.pk)
|
||||
ancestors = Page.objects.filter(ancestor_of_q(page))
|
||||
ancestor_permissions = publish_permissions.filter(page__in=ancestors)
|
||||
groups = Group.objects.filter(
|
||||
Q(page_permissions__in=ancestor_permissions)
|
||||
| Q(page_permissions__pk=permission.pk)
|
||||
).distinct()
|
||||
|
||||
# get a GroupApprovalTask with groups matching these publish permission groups (and no others)
|
||||
task = (
|
||||
GroupApprovalTask.objects.filter(groups__id__in=groups.all())
|
||||
.annotate(count=Count("groups"))
|
||||
.filter(count=groups.count())
|
||||
.filter(active=True)
|
||||
.first()
|
||||
)
|
||||
if not task:
|
||||
# if no such task exists, create it
|
||||
group_names = " ".join([group.name for group in groups])
|
||||
task = GroupApprovalTask.objects.create(
|
||||
name=group_names + " approval",
|
||||
content_type=group_approval_content_type,
|
||||
active=True,
|
||||
)
|
||||
task.groups.set(groups)
|
||||
|
||||
# get a Workflow containing only this task if it exists, otherwise create it
|
||||
workflow = (
|
||||
Workflow.objects.annotate(task_number=Count("workflow_tasks"))
|
||||
.filter(task_number=1)
|
||||
.filter(workflow_tasks__task=task)
|
||||
.filter(active=True)
|
||||
.first()
|
||||
)
|
||||
if not workflow:
|
||||
workflow = Workflow.objects.create(name=task.name, active=True)
|
||||
|
||||
WorkflowTask.objects.create(
|
||||
workflow=workflow,
|
||||
task=task,
|
||||
sort_order=0,
|
||||
)
|
||||
|
||||
# if the workflow is not linked by a WorkflowPage to the permission's linked page, link it by creating a new WorkflowPage now
|
||||
if not WorkflowPage.objects.filter(workflow=workflow, page=page).exists():
|
||||
WorkflowPage.objects.create(workflow=workflow, page=page)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0047_add_workflow_models"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(create_default_workflows, migrations.RunPython.noop),
|
||||
]
|
||||
28
env/lib/python3.10/site-packages/wagtail/migrations/0049_taskstate_finished_by.py
vendored
Normal file
28
env/lib/python3.10/site-packages/wagtail/migrations/0049_taskstate_finished_by.py
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
# Generated by Django 3.0.3 on 2020-03-10 11:01
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("wagtailcore", "0048_add_default_workflows"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="taskstate",
|
||||
name="finished_by",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="finished_task_states",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
verbose_name="finished by",
|
||||
),
|
||||
),
|
||||
]
|
||||
40
env/lib/python3.10/site-packages/wagtail/migrations/0050_workflow_rejected_to_needs_changes.py
vendored
Normal file
40
env/lib/python3.10/site-packages/wagtail/migrations/0050_workflow_rejected_to_needs_changes.py
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
# Generated by Django 3.0.5 on 2020-05-20 10:49
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0049_taskstate_finished_by"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveConstraint(
|
||||
model_name="workflowstate",
|
||||
name="unique_in_progress_workflow",
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="workflowstate",
|
||||
name="status",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("in_progress", "In progress"),
|
||||
("approved", "Approved"),
|
||||
("needs_changes", "Needs changes"),
|
||||
("cancelled", "Cancelled"),
|
||||
],
|
||||
default="in_progress",
|
||||
max_length=50,
|
||||
verbose_name="status",
|
||||
),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="workflowstate",
|
||||
constraint=models.UniqueConstraint(
|
||||
condition=models.Q(status__in=("in_progress", "needs_changes")),
|
||||
fields=("page",),
|
||||
name="unique_in_progress_workflow",
|
||||
),
|
||||
),
|
||||
]
|
||||
18
env/lib/python3.10/site-packages/wagtail/migrations/0051_taskstate_comment.py
vendored
Normal file
18
env/lib/python3.10/site-packages/wagtail/migrations/0051_taskstate_comment.py
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 3.0.5 on 2020-05-28 10:37
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0050_workflow_rejected_to_needs_changes"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="taskstate",
|
||||
name="comment",
|
||||
field=models.TextField(blank=True),
|
||||
),
|
||||
]
|
||||
84
env/lib/python3.10/site-packages/wagtail/migrations/0052_pagelogentry.py
vendored
Normal file
84
env/lib/python3.10/site-packages/wagtail/migrations/0052_pagelogentry.py
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
# Generated by Django 3.0.5 on 2020-07-09 21:07
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("wagtailcore", "0051_taskstate_comment"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="PageLogEntry",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("label", models.TextField()),
|
||||
("action", models.CharField(blank=True, db_index=True, max_length=255)),
|
||||
("data_json", models.TextField(blank=True)),
|
||||
("timestamp", models.DateTimeField(verbose_name="timestamp (UTC)")),
|
||||
("content_changed", models.BooleanField(db_index=True, default=False)),
|
||||
("deleted", models.BooleanField(default=False)),
|
||||
(
|
||||
"content_type",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="+",
|
||||
to="contenttypes.ContentType",
|
||||
verbose_name="content type",
|
||||
),
|
||||
),
|
||||
(
|
||||
"page",
|
||||
models.ForeignKey(
|
||||
db_constraint=False,
|
||||
on_delete=django.db.models.deletion.DO_NOTHING,
|
||||
related_name="+",
|
||||
to="wagtailcore.Page",
|
||||
),
|
||||
),
|
||||
(
|
||||
"revision",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
db_constraint=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.DO_NOTHING,
|
||||
related_name="+",
|
||||
to="wagtailcore.PageRevision",
|
||||
),
|
||||
),
|
||||
(
|
||||
"user",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
db_constraint=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.DO_NOTHING,
|
||||
related_name="+",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "page log entry",
|
||||
"verbose_name_plural": "page log entries",
|
||||
"ordering": ["-timestamp", "-id"],
|
||||
},
|
||||
),
|
||||
]
|
||||
31
env/lib/python3.10/site-packages/wagtail/migrations/0053_locale_model.py
vendored
Normal file
31
env/lib/python3.10/site-packages/wagtail/migrations/0053_locale_model.py
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
# Generated by Django 2.2.10 on 2020-07-13 10:13
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0052_pagelogentry"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Locale",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("language_code", models.CharField(max_length=100, unique=True)),
|
||||
],
|
||||
options={
|
||||
"ordering": ["language_code"],
|
||||
},
|
||||
),
|
||||
]
|
||||
25
env/lib/python3.10/site-packages/wagtail/migrations/0054_initial_locale.py
vendored
Normal file
25
env/lib/python3.10/site-packages/wagtail/migrations/0054_initial_locale.py
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
# Generated by Django 2.2.10 on 2020-07-13 10:13
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations
|
||||
|
||||
from wagtail.coreutils import get_supported_content_language_variant
|
||||
|
||||
|
||||
def initial_locale(apps, schema_editor):
|
||||
Locale = apps.get_model("wagtailcore.Locale")
|
||||
|
||||
Locale.objects.create(
|
||||
language_code=get_supported_content_language_variant(settings.LANGUAGE_CODE),
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0053_locale_model"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(initial_locale, migrations.RunPython.noop),
|
||||
]
|
||||
34
env/lib/python3.10/site-packages/wagtail/migrations/0055_page_locale_fields.py
vendored
Normal file
34
env/lib/python3.10/site-packages/wagtail/migrations/0055_page_locale_fields.py
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
# Generated by Django 2.2.10 on 2020-07-13 10:13
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0054_initial_locale"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="page",
|
||||
name="translation_key",
|
||||
field=models.UUIDField(editable=False, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="page",
|
||||
name="locale",
|
||||
field=models.ForeignKey(
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
related_name="+",
|
||||
to="wagtailcore.Locale",
|
||||
),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="page",
|
||||
unique_together={("translation_key", "locale")},
|
||||
),
|
||||
]
|
||||
16
env/lib/python3.10/site-packages/wagtail/migrations/0056_page_locale_fields_populate.py
vendored
Normal file
16
env/lib/python3.10/site-packages/wagtail/migrations/0056_page_locale_fields_populate.py
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
# Generated by Django 2.2.10 on 2020-07-13 10:13
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
from wagtail.models import BootstrapTranslatableModel
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0055_page_locale_fields"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
BootstrapTranslatableModel("wagtailcore.Page"),
|
||||
]
|
||||
30
env/lib/python3.10/site-packages/wagtail/migrations/0057_page_locale_fields_notnull.py
vendored
Normal file
30
env/lib/python3.10/site-packages/wagtail/migrations/0057_page_locale_fields_notnull.py
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
# Generated by Django 2.2.10 on 2020-07-13 10:17
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0056_page_locale_fields_populate"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="locale",
|
||||
field=models.ForeignKey(
|
||||
editable=False,
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
related_name="+",
|
||||
to="wagtailcore.Locale",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="translation_key",
|
||||
field=models.UUIDField(default=uuid.uuid4, editable=False),
|
||||
),
|
||||
]
|
||||
26
env/lib/python3.10/site-packages/wagtail/migrations/0058_page_alias_of.py
vendored
Normal file
26
env/lib/python3.10/site-packages/wagtail/migrations/0058_page_alias_of.py
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 3.0.9 on 2020-08-04 12:38
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0057_page_locale_fields_notnull"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="page",
|
||||
name="alias_of",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="aliases",
|
||||
to="wagtailcore.Page",
|
||||
),
|
||||
),
|
||||
]
|
||||
26
env/lib/python3.10/site-packages/wagtail/migrations/0059_apply_collection_ordering.py
vendored
Normal file
26
env/lib/python3.10/site-packages/wagtail/migrations/0059_apply_collection_ordering.py
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 3.1.1 on 2020-09-30 10:14
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
# import the real Collection model (as opposed to the frozen version we'd obtain with
|
||||
# apps.get_model) so that we can use its fix_tree method. Importing real models in migrations is
|
||||
# generally avoided since it's liable to generate SQL queries according to the final migrated
|
||||
# database state which we haven't reached yet - however, in this case it should be safe because
|
||||
# fix_tree only touches the Treebeard-specific fields via values_list and update, and shouldn't be
|
||||
# sensitive to schema changes elsewhere.
|
||||
from wagtail.models import Collection
|
||||
|
||||
|
||||
def apply_collection_ordering(apps, schema_editor):
|
||||
Collection.fix_tree(fix_paths=True)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0058_page_alias_of"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(apply_collection_ordering, migrations.RunPython.noop),
|
||||
]
|
||||
25
env/lib/python3.10/site-packages/wagtail/migrations/0060_fix_workflow_unique_constraint.py
vendored
Normal file
25
env/lib/python3.10/site-packages/wagtail/migrations/0060_fix_workflow_unique_constraint.py
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
# Generated by Django 3.1.3 on 2020-11-27 01:19
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0059_apply_collection_ordering"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveConstraint(
|
||||
model_name="workflowstate",
|
||||
name="unique_in_progress_workflow",
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="workflowstate",
|
||||
constraint=models.UniqueConstraint(
|
||||
condition=models.Q(status__in=("in_progress", "needs_changes")),
|
||||
fields=("page",),
|
||||
name="unique_in_progress_workflow",
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,32 @@
|
||||
# Generated by Django 3.0.12 on 2021-02-04 15:31
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0060_fix_workflow_unique_constraint"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="search_description",
|
||||
field=models.TextField(
|
||||
blank=True,
|
||||
help_text="The descriptive text displayed underneath a headline in search engine results.",
|
||||
verbose_name="meta description",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="page",
|
||||
name="seo_title",
|
||||
field=models.CharField(
|
||||
blank=True,
|
||||
help_text="The name of the page displayed on search engine results as the clickable headline.",
|
||||
max_length=255,
|
||||
verbose_name="title tag",
|
||||
),
|
||||
),
|
||||
]
|
||||
149
env/lib/python3.10/site-packages/wagtail/migrations/0062_comment_models_and_pagesubscription.py
vendored
Normal file
149
env/lib/python3.10/site-packages/wagtail/migrations/0062_comment_models_and_pagesubscription.py
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
# Generated by Django 3.0.3 on 2021-04-19 13:54
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import modelcluster.fields
|
||||
from wagtail.models import COMMENTS_RELATION_NAME
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("wagtailcore", "0061_change_promote_tab_helpt_text_and_verbose_names"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Comment",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("text", models.TextField()),
|
||||
("contentpath", models.TextField()),
|
||||
("position", models.TextField(blank=True)),
|
||||
("created_at", models.DateTimeField(auto_now_add=True)),
|
||||
("updated_at", models.DateTimeField(auto_now=True)),
|
||||
("resolved_at", models.DateTimeField(blank=True, null=True)),
|
||||
(
|
||||
"page",
|
||||
modelcluster.fields.ParentalKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name=COMMENTS_RELATION_NAME,
|
||||
to="wagtailcore.Page",
|
||||
),
|
||||
),
|
||||
(
|
||||
"resolved_by",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="comments_resolved",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
(
|
||||
"revision_created",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="created_comments",
|
||||
to="wagtailcore.PageRevision",
|
||||
),
|
||||
),
|
||||
(
|
||||
"user",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name=COMMENTS_RELATION_NAME,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "comment",
|
||||
"verbose_name_plural": "comments",
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="CommentReply",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("text", models.TextField()),
|
||||
("created_at", models.DateTimeField(auto_now_add=True)),
|
||||
("updated_at", models.DateTimeField(auto_now=True)),
|
||||
(
|
||||
"comment",
|
||||
modelcluster.fields.ParentalKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="replies",
|
||||
to="wagtailcore.Comment",
|
||||
),
|
||||
),
|
||||
(
|
||||
"user",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="comment_replies",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "comment reply",
|
||||
"verbose_name_plural": "comment replies",
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="PageSubscription",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("comment_notifications", models.BooleanField()),
|
||||
(
|
||||
"page",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="subscribers",
|
||||
to="wagtailcore.Page",
|
||||
),
|
||||
),
|
||||
(
|
||||
"user",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="page_subscriptions",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"unique_together": {("page", "user")},
|
||||
},
|
||||
),
|
||||
]
|
||||
65
env/lib/python3.10/site-packages/wagtail/migrations/0063_modellogentry.py
vendored
Normal file
65
env/lib/python3.10/site-packages/wagtail/migrations/0063_modellogentry.py
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
# Generated by Django 3.1.12 on 2021-06-16 14:08
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("wagtailcore", "0062_comment_models_and_pagesubscription"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="ModelLogEntry",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("label", models.TextField()),
|
||||
("action", models.CharField(blank=True, db_index=True, max_length=255)),
|
||||
("data_json", models.TextField(blank=True)),
|
||||
("timestamp", models.DateTimeField(verbose_name="timestamp (UTC)")),
|
||||
("content_changed", models.BooleanField(db_index=True, default=False)),
|
||||
("deleted", models.BooleanField(default=False)),
|
||||
("object_id", models.CharField(db_index=True, max_length=255)),
|
||||
(
|
||||
"content_type",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="+",
|
||||
to="contenttypes.contenttype",
|
||||
verbose_name="content type",
|
||||
),
|
||||
),
|
||||
(
|
||||
"user",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
db_constraint=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.DO_NOTHING,
|
||||
related_name="+",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "model log entry",
|
||||
"verbose_name_plural": "model log entries",
|
||||
"ordering": ["-timestamp", "-id"],
|
||||
},
|
||||
),
|
||||
]
|
||||
23
env/lib/python3.10/site-packages/wagtail/migrations/0064_log_timestamp_indexes.py
vendored
Normal file
23
env/lib/python3.10/site-packages/wagtail/migrations/0064_log_timestamp_indexes.py
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 3.2.5 on 2021-07-20 12:14
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0063_modellogentry"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="modellogentry",
|
||||
name="timestamp",
|
||||
field=models.DateTimeField(db_index=True, verbose_name="timestamp (UTC)"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagelogentry",
|
||||
name="timestamp",
|
||||
field=models.DateTimeField(db_index=True, verbose_name="timestamp (UTC)"),
|
||||
),
|
||||
]
|
||||
33
env/lib/python3.10/site-packages/wagtail/migrations/0065_log_entry_uuid.py
vendored
Normal file
33
env/lib/python3.10/site-packages/wagtail/migrations/0065_log_entry_uuid.py
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 3.2.5 on 2021-09-01 14:20
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0064_log_timestamp_indexes"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="modellogentry",
|
||||
name="uuid",
|
||||
field=models.UUIDField(
|
||||
blank=True,
|
||||
editable=False,
|
||||
help_text="Log entries that happened as part of the same user action are assigned the same UUID",
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="pagelogentry",
|
||||
name="uuid",
|
||||
field=models.UUIDField(
|
||||
blank=True,
|
||||
editable=False,
|
||||
help_text="Log entries that happened as part of the same user action are assigned the same UUID",
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
]
|
||||
77
env/lib/python3.10/site-packages/wagtail/migrations/0066_collection_management_permissions.py
vendored
Normal file
77
env/lib/python3.10/site-packages/wagtail/migrations/0066_collection_management_permissions.py
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def grant_instance_level_collection_management_permissions(apps, schema_editor):
|
||||
"""
|
||||
Give the groups who currently manage all collections permission to manage root collections
|
||||
"""
|
||||
Collection = apps.get_model("wagtailcore.Collection")
|
||||
Group = apps.get_model("auth.Group")
|
||||
GroupCollectionPermission = apps.get_model("wagtailcore.GroupCollectionPermission")
|
||||
Permission = apps.get_model("auth.Permission")
|
||||
|
||||
groups_w_permissions = Group.objects.filter(
|
||||
permissions__content_type__app_label="wagtailcore",
|
||||
permissions__content_type__model="collection",
|
||||
permissions__codename__in=[
|
||||
"add_collection",
|
||||
"change_collection",
|
||||
"delete_collection",
|
||||
],
|
||||
).values("id", "name", "permissions__id", "permissions__codename")
|
||||
|
||||
for root_collection in Collection.objects.filter(depth=1).all():
|
||||
for row in groups_w_permissions:
|
||||
GroupCollectionPermission.objects.create(
|
||||
group_id=row["id"],
|
||||
permission_id=row["permissions__id"],
|
||||
collection_id=root_collection.id,
|
||||
)
|
||||
# Now remove the model-level permissions for collections
|
||||
collection_permissions = Permission.objects.filter(
|
||||
content_type__app_label="wagtailcore",
|
||||
content_type__model="collection",
|
||||
codename__in=["add_collection", "change_collection", "delete_collection"],
|
||||
)
|
||||
for perm in collection_permissions.all():
|
||||
perm.group_set.clear()
|
||||
|
||||
|
||||
def revert_to_model_level_collection_management_permissions(apps, schema_editor):
|
||||
"""
|
||||
Give model-level permission to all groups who have that permission on the root collection
|
||||
"""
|
||||
Collection = apps.get_model("wagtailcore.Collection")
|
||||
GroupCollectionPermission = apps.get_model("wagtailcore.GroupCollectionPermission")
|
||||
|
||||
root_collections = Collection.objects.filter(depth=1).all()
|
||||
group_collection_permissions = GroupCollectionPermission.objects.filter(
|
||||
permission__content_type__app_label="wagtailcore",
|
||||
permission__content_type__model="collection",
|
||||
permission__codename__in=[
|
||||
"add_collection",
|
||||
"change_collection",
|
||||
"delete_collection",
|
||||
],
|
||||
collection__in=root_collections,
|
||||
).select_related("group", "permission")
|
||||
|
||||
for row in group_collection_permissions.all():
|
||||
row.group.permissions.add(row.permission)
|
||||
|
||||
# Now delete the instance-level collection management permissions
|
||||
group_collection_permissions.all().delete()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0065_log_entry_uuid"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
grant_instance_level_collection_management_permissions,
|
||||
revert_to_model_level_collection_management_permissions,
|
||||
)
|
||||
]
|
||||
27
env/lib/python3.10/site-packages/wagtail/migrations/0067_alter_pagerevision_content_json.py
vendored
Normal file
27
env/lib/python3.10/site-packages/wagtail/migrations/0067_alter_pagerevision_content_json.py
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
# Generated by Django 4.0.2 on 2022-02-22 13:06
|
||||
|
||||
import django.core.serializers.json
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0066_collection_management_permissions"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="pagerevision",
|
||||
name="content_json",
|
||||
field=models.JSONField(
|
||||
encoder=django.core.serializers.json.DjangoJSONEncoder,
|
||||
verbose_name="content JSON",
|
||||
),
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name="pagerevision",
|
||||
old_name="content_json",
|
||||
new_name="content",
|
||||
),
|
||||
]
|
||||
30
env/lib/python3.10/site-packages/wagtail/migrations/0068_log_entry_empty_object.py
vendored
Normal file
30
env/lib/python3.10/site-packages/wagtail/migrations/0068_log_entry_empty_object.py
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
# Generated by Django 4.0.2 on 2022-02-22 04:27
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def replace_empty_string_with_empty_object(apps, schema_editor):
|
||||
ModelLogEntry = apps.get_model("wagtailcore.ModelLogEntry")
|
||||
PageLogEntry = apps.get_model("wagtailcore.PageLogEntry")
|
||||
ModelLogEntry.objects.filter(data_json='""').update(data_json="{}")
|
||||
PageLogEntry.objects.filter(data_json='""').update(data_json="{}")
|
||||
|
||||
|
||||
def revert_empty_object_to_empty_string(apps, schema_editor):
|
||||
ModelLogEntry = apps.get_model("wagtailcore.ModelLogEntry")
|
||||
PageLogEntry = apps.get_model("wagtailcore.PageLogEntry")
|
||||
ModelLogEntry.objects.filter(data_json="{}").update(data_json='""')
|
||||
PageLogEntry.objects.filter(data_json="{}").update(data_json='""')
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0067_alter_pagerevision_content_json"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
replace_empty_string_with_empty_object, revert_empty_object_to_empty_string
|
||||
),
|
||||
]
|
||||
33
env/lib/python3.10/site-packages/wagtail/migrations/0069_log_entry_jsonfield.py
vendored
Normal file
33
env/lib/python3.10/site-packages/wagtail/migrations/0069_log_entry_jsonfield.py
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 4.0.2 on 2022-02-24 04:39
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0068_log_entry_empty_object"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="modellogentry",
|
||||
name="data_json",
|
||||
field=models.JSONField(blank=True, default=dict),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagelogentry",
|
||||
name="data_json",
|
||||
field=models.JSONField(blank=True, default=dict),
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name="modellogentry",
|
||||
old_name="data_json",
|
||||
new_name="data",
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name="pagelogentry",
|
||||
old_name="data_json",
|
||||
new_name="data",
|
||||
),
|
||||
]
|
||||
79
env/lib/python3.10/site-packages/wagtail/migrations/0070_rename_pagerevision_revision.py
vendored
Normal file
79
env/lib/python3.10/site-packages/wagtail/migrations/0070_rename_pagerevision_revision.py
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
# Generated by Django 4.0.3 on 2022-04-26 12:31
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
def disable_sqlite_legacy_alter_table(apps, schema_editor):
|
||||
# Fix for https://github.com/wagtail/wagtail/issues/8635
|
||||
if schema_editor.connection.vendor == "sqlite":
|
||||
schema_editor.execute("PRAGMA legacy_alter_table = OFF")
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("wagtailcore", "0069_log_entry_jsonfield"),
|
||||
]
|
||||
|
||||
atomic = False
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
disable_sqlite_legacy_alter_table,
|
||||
migrations.RunPython.noop,
|
||||
),
|
||||
migrations.RenameModel(
|
||||
old_name="PageRevision",
|
||||
new_name="Revision",
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name="revision",
|
||||
options={"verbose_name": "revision", "verbose_name_plural": "revisions"},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="revision",
|
||||
name="page",
|
||||
field=models.CharField(max_length=255, verbose_name="object id"),
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name="revision",
|
||||
old_name="page",
|
||||
new_name="object_id",
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="revision",
|
||||
name="content_type",
|
||||
field=models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=models.CASCADE,
|
||||
related_name="+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="revision",
|
||||
name="base_content_type",
|
||||
field=models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=models.CASCADE,
|
||||
related_name="+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="revision",
|
||||
index=models.Index(
|
||||
fields=["content_type", "object_id"],
|
||||
name="content_object_idx",
|
||||
),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="revision",
|
||||
index=models.Index(
|
||||
fields=["base_content_type", "object_id"],
|
||||
name="base_content_object_idx",
|
||||
),
|
||||
),
|
||||
]
|
||||
37
env/lib/python3.10/site-packages/wagtail/migrations/0071_populate_revision_content_type.py
vendored
Normal file
37
env/lib/python3.10/site-packages/wagtail/migrations/0071_populate_revision_content_type.py
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
# Generated by Django 4.0.3 on 2022-04-26 13:18
|
||||
|
||||
from django.db import migrations, models
|
||||
from django.db.models.fields.json import KeyTextTransform
|
||||
from django.db.models.functions import Cast
|
||||
|
||||
|
||||
def populate_revision_content_type(apps, schema_editor):
|
||||
ContentType = apps.get_model("contenttypes.ContentType")
|
||||
Revision = apps.get_model("wagtailcore.Revision")
|
||||
page_type = ContentType.objects.get(app_label="wagtailcore", model="page")
|
||||
Revision.objects.all().update(
|
||||
base_content_type=page_type,
|
||||
content_type_id=Cast(
|
||||
KeyTextTransform("content_type", models.F("content")),
|
||||
output_field=models.PositiveIntegerField(),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def empty_revision_content_type(apps, schema_editor):
|
||||
Revision = apps.get_model("wagtailcore.Revision")
|
||||
Revision.objects.all().update(base_content_type=None, content_type=None)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0070_rename_pagerevision_revision"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
populate_revision_content_type,
|
||||
empty_revision_content_type,
|
||||
)
|
||||
]
|
||||
33
env/lib/python3.10/site-packages/wagtail/migrations/0072_alter_revision_content_type_notnull.py
vendored
Normal file
33
env/lib/python3.10/site-packages/wagtail/migrations/0072_alter_revision_content_type_notnull.py
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 4.0.3 on 2022-04-26 13:28
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
("wagtailcore", "0071_populate_revision_content_type"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="revision",
|
||||
name="content_type",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="contenttypes.contenttype",
|
||||
related_name="+",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="revision",
|
||||
name="base_content_type",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="contenttypes.contenttype",
|
||||
related_name="+",
|
||||
),
|
||||
),
|
||||
]
|
||||
27
env/lib/python3.10/site-packages/wagtail/migrations/0073_page_latest_revision.py
vendored
Normal file
27
env/lib/python3.10/site-packages/wagtail/migrations/0073_page_latest_revision.py
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
# Generated by Django 4.0.4 on 2022-05-25 15:20
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0072_alter_revision_content_type_notnull"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="page",
|
||||
name="latest_revision",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="+",
|
||||
to="wagtailcore.revision",
|
||||
verbose_name="latest revision",
|
||||
),
|
||||
),
|
||||
]
|
||||
18
env/lib/python3.10/site-packages/wagtail/migrations/0074_revision_object_str.py
vendored
Normal file
18
env/lib/python3.10/site-packages/wagtail/migrations/0074_revision_object_str.py
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.0.4 on 2022-05-25 15:25
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0073_page_latest_revision"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="revision",
|
||||
name="object_str",
|
||||
field=models.TextField(default=""),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,41 @@
|
||||
# Generated by Django 4.0.3 on 2022-05-26 13:58
|
||||
|
||||
from django.db import migrations, models
|
||||
from django.db.models.functions import Cast
|
||||
|
||||
|
||||
def populate_latest_revision(apps, schema_editor):
|
||||
Page = apps.get_model("wagtailcore.Page")
|
||||
Revision = apps.get_model("wagtailcore.Revision")
|
||||
latest_revision_id = models.Subquery(
|
||||
Revision.objects.filter(
|
||||
content_type_id=models.OuterRef("content_type_id"),
|
||||
object_id=Cast(models.OuterRef("pk"), models.CharField()),
|
||||
)
|
||||
.order_by("-created_at", "-id")
|
||||
.values("pk")[:1]
|
||||
)
|
||||
Page.objects.all().update(latest_revision_id=latest_revision_id)
|
||||
|
||||
|
||||
def populate_revision_object_str(apps, schema_editor):
|
||||
Revision = apps.get_model("wagtailcore.Revision")
|
||||
Revision.objects.all().update(object_str=models.F("content__title"))
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0074_revision_object_str"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
populate_latest_revision,
|
||||
migrations.RunPython.noop,
|
||||
),
|
||||
migrations.RunPython(
|
||||
populate_revision_object_str,
|
||||
migrations.RunPython.noop,
|
||||
),
|
||||
]
|
||||
26
env/lib/python3.10/site-packages/wagtail/migrations/0076_modellogentry_revision.py
vendored
Normal file
26
env/lib/python3.10/site-packages/wagtail/migrations/0076_modellogentry_revision.py
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 4.0.3 on 2022-05-06 04:49
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0075_populate_latest_revision_and_revision_object_str"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="modellogentry",
|
||||
name="revision",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
db_constraint=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.DO_NOTHING,
|
||||
related_name="+",
|
||||
to="wagtailcore.revision",
|
||||
),
|
||||
),
|
||||
]
|
||||
28
env/lib/python3.10/site-packages/wagtail/migrations/0077_alter_revision_user.py
vendored
Normal file
28
env/lib/python3.10/site-packages/wagtail/migrations/0077_alter_revision_user.py
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
# Generated by Django 3.2.15 on 2022-09-20 13:00
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("wagtailcore", "0076_modellogentry_revision"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="revision",
|
||||
name="user",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="wagtail_revisions",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
verbose_name="user",
|
||||
),
|
||||
),
|
||||
]
|
||||
75
env/lib/python3.10/site-packages/wagtail/migrations/0078_referenceindex.py
vendored
Normal file
75
env/lib/python3.10/site-packages/wagtail/migrations/0078_referenceindex.py
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
# Generated by Django 4.0.7 on 2022-09-06 14:26
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
("wagtailcore", "0077_alter_revision_user"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="ReferenceIndex",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"object_id",
|
||||
models.CharField(max_length=255, verbose_name="object id"),
|
||||
),
|
||||
(
|
||||
"to_object_id",
|
||||
models.CharField(max_length=255, verbose_name="object id"),
|
||||
),
|
||||
("model_path", models.TextField()),
|
||||
("content_path", models.TextField()),
|
||||
("content_path_hash", models.UUIDField()),
|
||||
(
|
||||
"base_content_type",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
(
|
||||
"content_type",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
(
|
||||
"to_content_type",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"unique_together": {
|
||||
(
|
||||
"base_content_type",
|
||||
"object_id",
|
||||
"to_content_type",
|
||||
"to_object_id",
|
||||
"content_path_hash",
|
||||
)
|
||||
},
|
||||
},
|
||||
),
|
||||
]
|
||||
18
env/lib/python3.10/site-packages/wagtail/migrations/0079_rename_taskstate_page_revision.py
vendored
Normal file
18
env/lib/python3.10/site-packages/wagtail/migrations/0079_rename_taskstate_page_revision.py
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.dev20221212120043 on 2022-12-12 13:03
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0078_referenceindex"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name="taskstate",
|
||||
old_name="page_revision",
|
||||
new_name="revision",
|
||||
),
|
||||
]
|
||||
69
env/lib/python3.10/site-packages/wagtail/migrations/0080_generic_workflowstate.py
vendored
Normal file
69
env/lib/python3.10/site-packages/wagtail/migrations/0080_generic_workflowstate.py
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
# Generated by Django 4.2.dev20221212145044 on 2022-12-12 15:06
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0079_rename_taskstate_page_revision"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveConstraint(
|
||||
model_name="workflowstate",
|
||||
name="unique_in_progress_workflow",
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="workflowstate",
|
||||
name="page",
|
||||
field=models.CharField(max_length=255, verbose_name="object id"),
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name="workflowstate",
|
||||
old_name="page",
|
||||
new_name="object_id",
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="workflowstate",
|
||||
name="content_type",
|
||||
field=models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=models.CASCADE,
|
||||
related_name="+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="workflowstate",
|
||||
name="base_content_type",
|
||||
field=models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=models.CASCADE,
|
||||
related_name="+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="workflowstate",
|
||||
index=models.Index(
|
||||
fields=["content_type", "object_id"],
|
||||
name="workflowstate_ct_id_idx",
|
||||
),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="workflowstate",
|
||||
index=models.Index(
|
||||
fields=["base_content_type", "object_id"],
|
||||
name="workflowstate_base_ct_id_idx",
|
||||
),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="workflowstate",
|
||||
constraint=models.UniqueConstraint(
|
||||
condition=models.Q(("status__in", ("in_progress", "needs_changes"))),
|
||||
fields=("base_content_type", "object_id"),
|
||||
name="unique_in_progress_workflow",
|
||||
),
|
||||
),
|
||||
]
|
||||
41
env/lib/python3.10/site-packages/wagtail/migrations/0081_populate_workflowstate_content_type.py
vendored
Normal file
41
env/lib/python3.10/site-packages/wagtail/migrations/0081_populate_workflowstate_content_type.py
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
# Generated by Django 4.2.dev20221212151407 on 2022-12-12 15:16
|
||||
|
||||
from django.db import migrations, models
|
||||
from django.db.models.functions import Cast
|
||||
|
||||
|
||||
def populate_workflowstate_content_type(apps, schema_editor):
|
||||
ContentType = apps.get_model("contenttypes.ContentType")
|
||||
WorkflowState = apps.get_model("wagtailcore.WorkflowState")
|
||||
Page = apps.get_model("wagtailcore.Page")
|
||||
|
||||
page_type = ContentType.objects.get(app_label="wagtailcore", model="page")
|
||||
content_type_id = models.Subquery(
|
||||
Page.objects.filter(
|
||||
pk=Cast(models.OuterRef("object_id"), models.PositiveIntegerField())
|
||||
).values("content_type_id")
|
||||
)
|
||||
|
||||
WorkflowState.objects.all().update(
|
||||
base_content_type=page_type,
|
||||
content_type_id=content_type_id,
|
||||
)
|
||||
|
||||
|
||||
def empty_workflowstate_content_type(apps, schema_editor):
|
||||
WorkflowState = apps.get_model("wagtailcore.WorkflowState")
|
||||
WorkflowState.objects.all().update(base_content_type=None, content_type=None)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0080_generic_workflowstate"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
populate_workflowstate_content_type,
|
||||
empty_workflowstate_content_type,
|
||||
)
|
||||
]
|
||||
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 4.2.dev20221212151407 on 2022-12-12 15:38
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
("wagtailcore", "0081_populate_workflowstate_content_type"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="workflowstate",
|
||||
name="base_content_type",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="workflowstate",
|
||||
name="content_type",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
]
|
||||
40
env/lib/python3.10/site-packages/wagtail/migrations/0083_workflowcontenttype.py
vendored
Normal file
40
env/lib/python3.10/site-packages/wagtail/migrations/0083_workflowcontenttype.py
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
# Generated by Django 4.2.dev20221214105556 on 2022-12-14 10:56
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
("wagtailcore", "0082_alter_workflowstate_content_type_notnull"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="WorkflowContentType",
|
||||
fields=[
|
||||
(
|
||||
"content_type",
|
||||
models.OneToOneField(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
primary_key=True,
|
||||
related_name="wagtail_workflow_content_type",
|
||||
serialize=False,
|
||||
to="contenttypes.contenttype",
|
||||
verbose_name="content type",
|
||||
),
|
||||
),
|
||||
(
|
||||
"workflow",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="workflow_content_types",
|
||||
to="wagtailcore.workflow",
|
||||
verbose_name="workflow",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
]
|
||||
26
env/lib/python3.10/site-packages/wagtail/migrations/0084_add_default_page_permissions.py
vendored
Normal file
26
env/lib/python3.10/site-packages/wagtail/migrations/0084_add_default_page_permissions.py
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 4.2.1 on 2023-06-14 15:43
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0083_workflowcontenttype"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name="page",
|
||||
options={
|
||||
"permissions": [
|
||||
("bulk_delete_page", "Delete pages with children"),
|
||||
("lock_page", "Lock/unlock pages you've locked"),
|
||||
("publish_page", "Publish any page"),
|
||||
("unlock_page", "Unlock any page"),
|
||||
],
|
||||
"verbose_name": "page",
|
||||
"verbose_name_plural": "pages",
|
||||
},
|
||||
),
|
||||
]
|
||||
47
env/lib/python3.10/site-packages/wagtail/migrations/0085_add_grouppagepermission_permission.py
vendored
Normal file
47
env/lib/python3.10/site-packages/wagtail/migrations/0085_add_grouppagepermission_permission.py
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
# Generated by Django 4.2.1 on 2023-06-14 15:50
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0084_add_default_page_permissions"),
|
||||
]
|
||||
|
||||
# Add a nullable permission ForeignKey and make the old permission_type
|
||||
# field nullable so both formats still work for the duration of the
|
||||
# deprecation period.
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="grouppagepermission",
|
||||
name="permission",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="auth.permission",
|
||||
verbose_name="permission",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="permission_type",
|
||||
field=models.CharField(
|
||||
verbose_name="permission type",
|
||||
null=True,
|
||||
blank=True,
|
||||
max_length=20,
|
||||
choices=[
|
||||
("add", "Add/edit pages you own"),
|
||||
("bulk_delete", "Delete pages with children"),
|
||||
# Use "change" instead of "edit" to match Django's permission codename
|
||||
("change", "Edit any page"),
|
||||
("lock", "Lock/unlock pages you've locked"),
|
||||
("publish", "Publish any page"),
|
||||
("unlock", "Unlock any page"),
|
||||
],
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,88 @@
|
||||
# Generated by Django 4.2.1 on 2023-06-14 16:23
|
||||
|
||||
from django.contrib.auth.management import create_permissions
|
||||
from django.db import migrations, models
|
||||
from django.db.models.functions import Concat, Length, Substr
|
||||
|
||||
|
||||
def add_permissions(apps, schema_editor):
|
||||
# Ensure all the new permissions in Page.Meta.permissions are created
|
||||
app_config = apps.get_app_config("wagtailcore")
|
||||
app_config.models_module = True
|
||||
create_permissions(app_config, verbosity=0)
|
||||
app_config.models_module = None
|
||||
|
||||
|
||||
def populate_grouppagepermission_permission(apps, schema_editor):
|
||||
ContentType = apps.get_model("contenttypes.ContentType")
|
||||
Permission = apps.get_model("auth.Permission")
|
||||
GroupPagePermission = apps.get_model("wagtailcore.GroupPagePermission")
|
||||
|
||||
page_type = ContentType.objects.get_by_natural_key("wagtailcore", "page")
|
||||
|
||||
# Normalise permission_type="edit" to permission_type="change"
|
||||
# and backfill permission from permission_type
|
||||
GroupPagePermission.objects.filter(
|
||||
models.Q(permission__isnull=True) | models.Q(permission_type="edit")
|
||||
).annotate(
|
||||
normalised_permission_type=models.Case(
|
||||
models.When(permission_type="edit", then=models.Value("change")),
|
||||
default=models.F("permission_type"),
|
||||
)
|
||||
).update(
|
||||
permission=Permission.objects.filter(
|
||||
content_type=page_type,
|
||||
codename=Concat(
|
||||
models.OuterRef("normalised_permission_type"),
|
||||
models.Value("_page"),
|
||||
),
|
||||
).values_list("pk", flat=True)[:1],
|
||||
permission_type=models.F("normalised_permission_type"),
|
||||
)
|
||||
|
||||
|
||||
def revert_grouppagepermission_permission(apps, schema_editor):
|
||||
GroupPagePermission = apps.get_model("wagtailcore.GroupPagePermission")
|
||||
Permission = apps.get_model("auth.Permission")
|
||||
|
||||
permission_type = (
|
||||
Permission.objects.filter(pk=models.OuterRef("permission"))
|
||||
.annotate(
|
||||
action=Substr(
|
||||
models.F("codename"),
|
||||
# Substr is 1-indexed
|
||||
1,
|
||||
# Length - 5 to remove "_page" suffix
|
||||
Length(models.F("codename")) - 5,
|
||||
)
|
||||
)
|
||||
.annotate(
|
||||
# Replace "change" with "edit" to match old permission_type
|
||||
permission_type=models.Case(
|
||||
models.When(action="change", then=models.Value("edit")),
|
||||
default=models.F("action"),
|
||||
)
|
||||
)
|
||||
.values("permission_type")[:1]
|
||||
)
|
||||
|
||||
# Backfill permission_type from permission foreign key and clear the foreign key
|
||||
GroupPagePermission.objects.all().update(
|
||||
permission_type=permission_type,
|
||||
permission=None,
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0085_add_grouppagepermission_permission"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(add_permissions, migrations.operations.RunPython.noop),
|
||||
migrations.RunPython(
|
||||
populate_grouppagepermission_permission,
|
||||
revert_grouppagepermission_permission,
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,42 @@
|
||||
# Generated by Django 4.2.1 on 2023-06-21 11:44
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0086_populate_grouppagepermission_permission"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterUniqueTogether(
|
||||
name="grouppagepermission",
|
||||
unique_together=set(),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="grouppagepermission",
|
||||
constraint=models.CheckConstraint(
|
||||
check=models.Q(
|
||||
("permission__isnull", False),
|
||||
("permission_type__isnull", False),
|
||||
_connector="OR",
|
||||
),
|
||||
name="permission_or_permission_type_not_null",
|
||||
),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="grouppagepermission",
|
||||
constraint=models.UniqueConstraint(
|
||||
fields=("group", "page", "permission"),
|
||||
name="unique_permission",
|
||||
),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="grouppagepermission",
|
||||
constraint=models.UniqueConstraint(
|
||||
fields=("group", "page", "permission_type"),
|
||||
name="unique_permission_type",
|
||||
),
|
||||
),
|
||||
]
|
||||
175
env/lib/python3.10/site-packages/wagtail/migrations/0088_fix_log_entry_json_timestamps.py
vendored
Normal file
175
env/lib/python3.10/site-packages/wagtail/migrations/0088_fix_log_entry_json_timestamps.py
vendored
Normal file
@@ -0,0 +1,175 @@
|
||||
# Generated by Django 3.2.6 on 2022-11-09 07:50
|
||||
|
||||
import datetime
|
||||
import logging
|
||||
|
||||
import django.core.serializers.json
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
from django.utils import timezone, dateparse
|
||||
|
||||
logger = logging.getLogger("wagtail.migrations")
|
||||
|
||||
|
||||
def legacy_to_iso_format(date_string, tz=None):
|
||||
dt = datetime.datetime.strptime(date_string, "%d %b %Y %H:%M")
|
||||
if settings.USE_TZ:
|
||||
dt = timezone.make_aware(dt, datetime.timezone.utc if tz is None else tz)
|
||||
dt = timezone.localtime(dt, datetime.timezone.utc)
|
||||
# We return the datetime object, so DjangoJSONEncoder will serialize it accordingly.
|
||||
return dt
|
||||
|
||||
|
||||
def iso_to_legacy_format(date_string, tz=None):
|
||||
dt = dateparse.parse_datetime(date_string)
|
||||
if dt is None:
|
||||
raise ValueError("date isn't well formatted")
|
||||
if settings.USE_TZ:
|
||||
dt = timezone.localtime(dt, datetime.timezone.utc if tz is None else tz)
|
||||
return dt.strftime("%d %b %Y %H:%M")
|
||||
|
||||
|
||||
def migrate_logs_with_created_only(model, converter):
|
||||
for item in (
|
||||
model.objects.filter(
|
||||
action__in=["wagtail.revert", "wagtail.rename", "wagtail.publish"]
|
||||
)
|
||||
.only("data")
|
||||
.iterator()
|
||||
):
|
||||
try:
|
||||
# If a previous_revision was available, the data contains "revision" with
|
||||
# its created date.
|
||||
# Also, there are "wagtail.publish" logs, which don't set data at all.
|
||||
created = item.data["revision"]["created"]
|
||||
# "created" is set to the previous revision's created_at, which is set
|
||||
# to UTC by django.
|
||||
item.data["revision"]["created"] = converter(created)
|
||||
except ValueError:
|
||||
logger.warning(
|
||||
"Failed to migrate 'created' timestamp '%s' of %s %s (%s)",
|
||||
item.data["revision"]["created"],
|
||||
model.__name__,
|
||||
item.pk,
|
||||
converter.__name__,
|
||||
)
|
||||
continue
|
||||
except (KeyError, TypeError):
|
||||
# Empty `data` in logs created since Wagtail 3.0 normalises to the
|
||||
# empty JSON object `{}`, so accessing unavailable data will raise
|
||||
# a `KeyError`.
|
||||
# However, old logs (e.g. "wagtail.publish" ones) may store the
|
||||
# `data` as a JSON `null` instead of an empty JSON object `{}` in
|
||||
# the database, which is deserialized to `None` by Python. So,
|
||||
# it raises a `TypeError` instead of a `KeyError`.
|
||||
continue
|
||||
else:
|
||||
item.save(update_fields=["data"])
|
||||
|
||||
|
||||
def migrate_schedule_logs(model, converter):
|
||||
for item in (
|
||||
model.objects.filter(
|
||||
action__in=["wagtail.publish.schedule", "wagtail.schedule.cancel"]
|
||||
)
|
||||
.only("data")
|
||||
.iterator()
|
||||
):
|
||||
changed = False
|
||||
try:
|
||||
created = item.data["revision"]["created"]
|
||||
# "created" is set to timezone.now() for new revisions ("wagtail.publish.schedule")
|
||||
# and to self.created_at for "wagtail.schedule.cancel", which is set to UTC
|
||||
# by django.
|
||||
item.data["revision"]["created"] = converter(created)
|
||||
changed = True
|
||||
except ValueError:
|
||||
logger.warning(
|
||||
"Failed to migrate 'created' timestamp '%s' of %s %s (%s)",
|
||||
created,
|
||||
model.__name__,
|
||||
item.pk,
|
||||
converter.__name__,
|
||||
)
|
||||
except (KeyError, TypeError):
|
||||
pass
|
||||
|
||||
# The go_live_at date is set to the revision object's "go_live_at".
|
||||
# The revision's object is created by deserializing the json data (see wagtail.models.Revision.as_object()),
|
||||
# and this process converts all datetime objects to the local timestamp (see https://github.com/wagtail/django-modelcluster/blob/8666f16eaf23ca98afc160b0a4729864411c0563/modelcluster/models.py#L109-L115).
|
||||
# That's the reason, why this date is the only date, which is not stored in the log's JSON as UTC, but in the default timezone.
|
||||
try:
|
||||
# May be unset for "wagtail.schedule.cancel"-logs.
|
||||
go_live_at = item.data["revision"].get("go_live_at")
|
||||
if go_live_at:
|
||||
item.data["revision"]["go_live_at"] = converter(
|
||||
go_live_at, tz=timezone.get_default_timezone()
|
||||
)
|
||||
changed = True
|
||||
except ValueError:
|
||||
logger.warning(
|
||||
"Failed to migrate 'go_live_at' timestamp '%s' of %s %s (%s)",
|
||||
go_live_at,
|
||||
model.__name__,
|
||||
item.pk,
|
||||
converter.__name__,
|
||||
)
|
||||
except (KeyError, TypeError):
|
||||
pass
|
||||
|
||||
if changed:
|
||||
item.save(update_fields=["data"])
|
||||
|
||||
|
||||
def migrate_custom_to_iso_format(apps, schema_editor):
|
||||
ModelLogEntry = apps.get_model("wagtailcore.ModelLogEntry")
|
||||
PageLogEntry = apps.get_model("wagtailcore.PageLogEntry")
|
||||
|
||||
migrate_logs_with_created_only(ModelLogEntry, legacy_to_iso_format)
|
||||
migrate_logs_with_created_only(PageLogEntry, legacy_to_iso_format)
|
||||
|
||||
migrate_schedule_logs(ModelLogEntry, legacy_to_iso_format)
|
||||
migrate_schedule_logs(PageLogEntry, legacy_to_iso_format)
|
||||
|
||||
|
||||
def migrate_iso_to_custom_format(apps, schema_editor):
|
||||
ModelLogEntry = apps.get_model("wagtailcore.ModelLogEntry")
|
||||
PageLogEntry = apps.get_model("wagtailcore.PageLogEntry")
|
||||
|
||||
migrate_logs_with_created_only(ModelLogEntry, iso_to_legacy_format)
|
||||
migrate_logs_with_created_only(PageLogEntry, iso_to_legacy_format)
|
||||
|
||||
migrate_schedule_logs(ModelLogEntry, iso_to_legacy_format)
|
||||
migrate_schedule_logs(PageLogEntry, iso_to_legacy_format)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0087_alter_grouppagepermission_unique_together_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="modellogentry",
|
||||
name="data",
|
||||
field=models.JSONField(
|
||||
blank=True,
|
||||
default=dict,
|
||||
encoder=django.core.serializers.json.DjangoJSONEncoder,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="pagelogentry",
|
||||
name="data",
|
||||
field=models.JSONField(
|
||||
blank=True,
|
||||
default=dict,
|
||||
encoder=django.core.serializers.json.DjangoJSONEncoder,
|
||||
),
|
||||
),
|
||||
migrations.RunPython(
|
||||
migrate_custom_to_iso_format,
|
||||
migrate_iso_to_custom_format,
|
||||
),
|
||||
]
|
||||
53
env/lib/python3.10/site-packages/wagtail/migrations/0089_log_entry_data_json_null_to_object.py
vendored
Normal file
53
env/lib/python3.10/site-packages/wagtail/migrations/0089_log_entry_data_json_null_to_object.py
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
# Generated by Django 4.2.3 on 2023-07-31 11:00
|
||||
|
||||
from django import VERSION as DJANGO_VERSION
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
def replace_json_null_with_empty_object(apps, schema_editor):
|
||||
ModelLogEntry = apps.get_model("wagtailcore.ModelLogEntry")
|
||||
PageLogEntry = apps.get_model("wagtailcore.PageLogEntry")
|
||||
|
||||
# https://github.com/django/django/pull/16245
|
||||
# The way to express a JSON `null` value was changed in Django 4.2.
|
||||
if DJANGO_VERSION >= (4, 2):
|
||||
null = models.Value(None, models.JSONField())
|
||||
else:
|
||||
null = models.Value("null")
|
||||
|
||||
ModelLogEntry.objects.filter(data=null).update(data={})
|
||||
PageLogEntry.objects.filter(data=null).update(data={})
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
"""
|
||||
Replace JSON `null` values with empty JSON objects in the log entry models'
|
||||
`data` field.
|
||||
|
||||
The 0068_log_entry_empty_object migration only handles the case where the
|
||||
`data` (formerly `data_json`) was an empty string (`""`), which was the case
|
||||
for some of the old logs when the field still used a `TextField`. However,
|
||||
in some cases e.g. the `"wagtail.publish"` logs, the `data` was also set to
|
||||
Python `None` that gets serialised to JSON `null`, which is not handled by
|
||||
that migration.
|
||||
|
||||
Empty `data` in logs created after the 0069_log_entry_jsonfield migration
|
||||
(and its accompanying code changes) is normalised to empty JSON objects.
|
||||
So, this migration is only needed for logs created before that migration
|
||||
(i.e. Wagtail 3.0).
|
||||
"""
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0088_fix_log_entry_json_timestamps"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
replace_json_null_with_empty_object,
|
||||
# No reverse operation because once the `null` values are replaced
|
||||
# with empty objects, there's no way to tell which ones were
|
||||
# originally `null` and which ones were originally empty objects.
|
||||
# There is practically no reason to reverse this migration anyway.
|
||||
migrations.RunPython.noop,
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,36 @@
|
||||
# Generated by Django 4.0.10 on 2023-10-30 11:07
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("auth", "0012_alter_user_first_name_max_length"),
|
||||
("wagtailcore", "0089_log_entry_data_json_null_to_object"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveConstraint(
|
||||
model_name="grouppagepermission",
|
||||
name="permission_or_permission_type_not_null",
|
||||
),
|
||||
migrations.RemoveConstraint(
|
||||
model_name="grouppagepermission",
|
||||
name="unique_permission_type",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name="grouppagepermission",
|
||||
name="permission_type",
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="grouppagepermission",
|
||||
name="permission",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="auth.permission",
|
||||
verbose_name="permission",
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 4.2.6 on 2023-10-26 15:44
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("wagtailcore", "0090_remove_grouppagepermission_permission_type"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name="revision",
|
||||
name="submitted_for_moderation",
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 4.2.7 on 2024-02-01 21:21
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wagtailcore', '0091_remove_revision_submitted_for_moderation'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='collectionviewrestriction',
|
||||
name='password',
|
||||
field=models.CharField(blank=True, help_text='Shared passwords should not be used to protect sensitive content. Anyone who has this password will be able to view the content.', max_length=255, verbose_name='shared password'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='collectionviewrestriction',
|
||||
name='restriction_type',
|
||||
field=models.CharField(choices=[('none', 'Public'), ('password', 'Private, accessible with a shared password'), ('login', 'Private, accessible to any logged-in users'), ('groups', 'Private, accessible to users in specific groups')], max_length=20),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='pageviewrestriction',
|
||||
name='password',
|
||||
field=models.CharField(blank=True, help_text='Shared passwords should not be used to protect sensitive content. Anyone who has this password will be able to view the content.', max_length=255, verbose_name='shared password'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='pageviewrestriction',
|
||||
name='restriction_type',
|
||||
field=models.CharField(choices=[('none', 'Public'), ('password', 'Private, accessible with a shared password'), ('login', 'Private, accessible to any logged-in users'), ('groups', 'Private, accessible to users in specific groups')], max_length=20),
|
||||
),
|
||||
]
|
||||
53
env/lib/python3.10/site-packages/wagtail/migrations/0093_uploadedfile.py
vendored
Normal file
53
env/lib/python3.10/site-packages/wagtail/migrations/0093_uploadedfile.py
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
# Generated by Django 4.2.7 on 2024-02-12 21:04
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
("wagtailcore", "0092_alter_collectionviewrestriction_password_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="UploadedFile",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("file", models.FileField(max_length=200, upload_to="wagtail_uploads")),
|
||||
(
|
||||
"for_content_type",
|
||||
models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="uploads",
|
||||
to="contenttypes.contenttype",
|
||||
verbose_name="for content type",
|
||||
),
|
||||
),
|
||||
(
|
||||
"uploaded_by_user",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
verbose_name="uploaded by user",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
]
|
||||
19
env/lib/python3.10/site-packages/wagtail/migrations/0094_alter_page_locale.py
vendored
Normal file
19
env/lib/python3.10/site-packages/wagtail/migrations/0094_alter_page_locale.py
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 5.0.6 on 2024-06-21 06:47
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wagtailcore', '0093_uploadedfile'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='page',
|
||||
name='locale',
|
||||
field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailcore.locale', verbose_name='locale'),
|
||||
),
|
||||
]
|
||||
0
env/lib/python3.10/site-packages/wagtail/migrations/__init__.py
vendored
Normal file
0
env/lib/python3.10/site-packages/wagtail/migrations/__init__.py
vendored
Normal file
BIN
env/lib/python3.10/site-packages/wagtail/migrations/__pycache__/0001_initial.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/wagtail/migrations/__pycache__/0001_initial.cpython-310.pyc
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
env/lib/python3.10/site-packages/wagtail/migrations/__pycache__/0002_initial_data.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/wagtail/migrations/__pycache__/0002_initial_data.cpython-310.pyc
vendored
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user