angrybeanie_wagtail/env/lib/python3.12/site-packages/wagtail/migrations/0001_initial.py

292 lines
10 KiB
Python
Raw Normal View History

2025-07-25 21:32:16 +10:00
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,
),
]