Register comparison classes at the field level instead of overriding get_comparison_class on panels

pull/8067/head
Matt Westcott 2021-11-04 22:08:33 +00:00 zatwierdzone przez Matt Westcott
rodzic 6e34b2fdcc
commit 179a867669
4 zmienionych plików z 16 dodań i 8 usunięć

Wyświetl plik

@ -11,7 +11,7 @@ from django.utils.translation import gettext_lazy as _
from taggit.managers import TaggableManager
from wagtail.core import blocks
from wagtail.core.fields import RichTextField
from wagtail.core.fields import RichTextField, StreamField
from wagtail.utils.registry import ModelFieldRegistry
@ -319,6 +319,9 @@ class StreamFieldComparison(FieldComparison):
).to_html()
register_comparison_class(StreamField, comparison_class=StreamFieldComparison)
class ChoiceFieldComparison(FieldComparison):
def htmldiff(self):
val_a = force_str(

Wyświetl plik

@ -603,8 +603,7 @@ class FieldPanel(EditHandler):
class RichTextFieldPanel(FieldPanel):
def get_comparison_class(self):
return compare.RichTextFieldComparison
pass
class BaseChooserPanel(FieldPanel):
@ -1012,9 +1011,6 @@ class StreamFieldPanel(FieldPanel):
return classes
def get_comparison_class(self):
return compare.StreamFieldComparison
def id_for_label(self):
# a StreamField may consist of many input fields, so it's not meaningful to
# attach the label to any specific one

Wyświetl plik

@ -24,3 +24,13 @@ class WagtailImagesAppConfig(AppConfig):
register_form_field_override(
ForeignKey, to=Image, override={"widget": AdminImageChooser}
)
# Set up image ForeignKeys to use ImageFieldComparison as the comparison class
# when comparing page revisions
from wagtail.admin.compare import register_comparison_class
from .edit_handlers import ImageFieldComparison
register_comparison_class(
ForeignKey, to=Image, comparison_class=ImageFieldComparison
)

Wyświetl plik

@ -5,8 +5,7 @@ from wagtail.admin.edit_handlers import BaseChooserPanel
class ImageChooserPanel(BaseChooserPanel):
def get_comparison_class(self):
return ImageFieldComparison
pass
class ImageFieldComparison(ForeignObjectComparison):