mirror of
https://github.com/Hopiu/wagtail-modeltranslation.git
synced 2026-05-10 16:24:49 +00:00
193 lines
4.2 KiB
Python
Executable file
193 lines
4.2 KiB
Python
Executable file
# coding: utf-8
|
|
from django.db import models
|
|
from modelcluster.fields import ParentalKey
|
|
from wagtail.wagtailadmin.edit_handlers import FieldPanel, MultiFieldPanel, FieldRowPanel, InlinePanel, StreamFieldPanel
|
|
from wagtail.wagtailcore import blocks
|
|
from wagtail.wagtailcore.fields import StreamField
|
|
from wagtail.wagtailcore.models import Page as WagtailPage
|
|
from wagtail.wagtailimages.edit_handlers import ImageChooserPanel
|
|
from wagtail.wagtailsearch import index
|
|
from wagtail.wagtailsnippets.models import register_snippet
|
|
|
|
|
|
# Wagtail Models
|
|
|
|
class TestRootPage(WagtailPage):
|
|
parent_page_types = []
|
|
subpage_types = ['tests.TestSlugPage1', 'tests.TestSlugPage2']
|
|
|
|
|
|
class TestSlugPage1(WagtailPage):
|
|
pass
|
|
|
|
|
|
class TestSlugPage2(WagtailPage):
|
|
pass
|
|
|
|
|
|
class PatchTestPage(WagtailPage):
|
|
description = models.CharField(max_length=50)
|
|
|
|
search_fields = (
|
|
index.SearchField('title'),
|
|
index.SearchField('description'),
|
|
)
|
|
|
|
|
|
@register_snippet
|
|
class PatchTestSnippet(models.Model):
|
|
name = models.CharField(max_length=10)
|
|
|
|
panels = [
|
|
FieldPanel('name')
|
|
]
|
|
|
|
|
|
# ######### Snippet Patching Models
|
|
|
|
@register_snippet
|
|
class FieldPanelSnippet(models.Model):
|
|
name = models.CharField(max_length=10)
|
|
|
|
panels = [
|
|
FieldPanel('name')
|
|
]
|
|
|
|
|
|
@register_snippet
|
|
class ImageChooserPanelSnippet(models.Model):
|
|
image = models.ForeignKey(
|
|
'wagtailimages.Image'
|
|
)
|
|
|
|
panels = [
|
|
ImageChooserPanel('image'),
|
|
]
|
|
|
|
|
|
@register_snippet
|
|
class FieldRowPanelSnippet(models.Model):
|
|
other_name = models.CharField(max_length=10)
|
|
|
|
panels = [
|
|
FieldRowPanel([
|
|
FieldPanel('other_name'),
|
|
]),
|
|
]
|
|
|
|
|
|
@register_snippet
|
|
class StreamFieldPanelSnippet(models.Model):
|
|
body = StreamField([
|
|
('text', blocks.CharBlock(max_length=10))
|
|
])
|
|
|
|
panels = [
|
|
StreamFieldPanel('body')
|
|
]
|
|
|
|
|
|
@register_snippet
|
|
class MultiFieldPanelSnippet(FieldPanelSnippet, ImageChooserPanelSnippet, FieldRowPanelSnippet):
|
|
panels = [
|
|
MultiFieldPanel(
|
|
FieldPanelSnippet.panels
|
|
),
|
|
MultiFieldPanel(
|
|
ImageChooserPanelSnippet.panels
|
|
),
|
|
MultiFieldPanel(
|
|
FieldRowPanelSnippet.panels
|
|
),
|
|
]
|
|
|
|
|
|
class BaseInlineModel(MultiFieldPanelSnippet):
|
|
field_name = models.CharField(max_length=10)
|
|
|
|
image_chooser = models.ForeignKey('wagtailimages.Image')
|
|
|
|
fieldrow_name = models.CharField(max_length=10)
|
|
|
|
panels = [
|
|
FieldPanel('field_name'),
|
|
ImageChooserPanel('image_chooser'),
|
|
FieldRowPanel([
|
|
FieldPanel('fieldrow_name'),
|
|
]),
|
|
] + MultiFieldPanelSnippet.panels
|
|
|
|
|
|
class SnippetInlineModel(BaseInlineModel):
|
|
page = ParentalKey('tests.InlinePanelSnippet', related_name='related_snippet_model')
|
|
|
|
|
|
@register_snippet
|
|
class InlinePanelSnippet(models.Model):
|
|
panels = [
|
|
InlinePanel('related_snippet_model')
|
|
]
|
|
|
|
|
|
# ######### Page Patching Models
|
|
|
|
class FieldPanelPage(WagtailPage):
|
|
name = models.CharField(max_length=50)
|
|
|
|
content_panels = [
|
|
FieldPanel('name'),
|
|
]
|
|
|
|
|
|
class ImageChooserPanelPage(WagtailPage):
|
|
image = models.ForeignKey(
|
|
'wagtailimages.Image'
|
|
)
|
|
|
|
content_panels = [
|
|
ImageChooserPanel('image'),
|
|
]
|
|
|
|
|
|
class FieldRowPanelPage(WagtailPage):
|
|
other_name = models.CharField(max_length=10)
|
|
|
|
content_panels = [
|
|
FieldRowPanel([
|
|
FieldPanel('other_name'),
|
|
]),
|
|
]
|
|
|
|
|
|
class StreamFieldPanelPage(WagtailPage):
|
|
body = StreamField([
|
|
('text', blocks.CharBlock(max_length=10))
|
|
])
|
|
|
|
content_panels = [
|
|
StreamFieldPanel('body')
|
|
]
|
|
|
|
|
|
class MultiFieldPanelPage(FieldPanelPage, ImageChooserPanelPage, FieldRowPanelPage):
|
|
content_panels = [
|
|
MultiFieldPanel(
|
|
FieldPanelPage.content_panels
|
|
),
|
|
MultiFieldPanel(
|
|
ImageChooserPanelPage.content_panels
|
|
),
|
|
MultiFieldPanel(
|
|
FieldRowPanelPage.content_panels
|
|
),
|
|
]
|
|
|
|
|
|
class PageInlineModel(BaseInlineModel):
|
|
page = ParentalKey('tests.InlinePanelPage', related_name='related_page_model')
|
|
|
|
|
|
class InlinePanelPage(WagtailPage):
|
|
content_panels = [
|
|
InlinePanel('related_page_model')
|
|
]
|