42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
from django.conf import settings
|
|
from django.db.models import Model
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from wagtail import hooks
|
|
from wagtail.models import Locale
|
|
|
|
|
|
class SimpleTranslation(Model):
|
|
"""
|
|
SimpleTranslation, dummy model to create the `submit_translation` permission.
|
|
|
|
We need this model to be concrete or the following management commands will misbehave:
|
|
- `remove_stale_contenttypes`, will drop the perm
|
|
- `dump_data`, will complain about the missing table
|
|
"""
|
|
|
|
class Meta:
|
|
default_permissions = []
|
|
permissions = [
|
|
("submit_translation", _("Can submit translations")),
|
|
]
|
|
|
|
|
|
@hooks.register("after_create_page")
|
|
def after_create_page(request, page):
|
|
"""Creates page aliases in other locales when a page is created.
|
|
|
|
Whenever a page is created under a specific locale, this signal handler
|
|
creates an alias page for that page under the other locales.
|
|
|
|
e.g. When an editor creates the page "blog/my-blog-post" under the English
|
|
tree, this signal handler creates an alias of that page called
|
|
"blog/my-blog-post" under the other locales' trees.
|
|
"""
|
|
if getattr(settings, "WAGTAILSIMPLETRANSLATION_SYNC_PAGE_TREE", False):
|
|
# Check if the source tree needs to be synchronised into any other trees
|
|
# Create aliases in all those locales
|
|
for locale in Locale.objects.exclude(pk=page.locale_id):
|
|
if not page.has_translation(locale):
|
|
page.copy_for_translation(locale, copy_parents=True, alias=True)
|