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, ), ]