kopia lustrzana https://github.com/wagtail/wagtail
Configure WagtailAdminModelForm to use TagField as standard for tag fields
rodzic
c470b33d44
commit
163efe3753
|
@ -5,13 +5,14 @@ from modelcluster.forms import ClusterForm, ClusterFormMetaclass
|
|||
from taggit.managers import TaggableManager
|
||||
|
||||
from wagtail.admin import widgets
|
||||
from wagtail.admin.forms.tags import TagField
|
||||
|
||||
|
||||
# Form field properties to override whenever we encounter a model field
|
||||
# that matches one of these types - including subclasses
|
||||
|
||||
def _get_tag_field_overrides(db_field):
|
||||
return {'widget': widgets.AdminTagWidget(tag_model=db_field.related_model)}
|
||||
return {'form_class': TagField, 'tag_model': db_field.related_model}
|
||||
|
||||
|
||||
FORM_FIELD_OVERRIDES = {
|
||||
|
|
|
@ -20,7 +20,7 @@ from wagtail.images.edit_handlers import ImageChooserPanel
|
|||
from wagtail.tests.testapp.forms import ValidatedPageForm
|
||||
from wagtail.tests.testapp.models import (
|
||||
EventPage, EventPageChooserModel, EventPageSpeaker, PageChooserModel,
|
||||
RestaurantPage, SimplePage, ValidatedPage)
|
||||
RestaurantPage, RestaurantTag, SimplePage, ValidatedPage)
|
||||
from wagtail.tests.utils import WagtailTestUtils
|
||||
|
||||
|
||||
|
@ -126,6 +126,22 @@ class TestGetFormForModel(TestCase):
|
|||
form_html = RestaurantPageForm().as_p()
|
||||
self.assertIn('/admin/tag\\u002Dautocomplete/tests/restauranttag/', form_html)
|
||||
|
||||
# widget should pick up the free_tagging=False attribute on the tag model
|
||||
# and set itself to autocomplete only
|
||||
self.assertIn('"autocompleteOnly": true', form_html)
|
||||
|
||||
# Free tagging should also be disabled at the form field validation level
|
||||
RestaurantTag.objects.create(name='Italian', slug='italian')
|
||||
RestaurantTag.objects.create(name='Indian', slug='indian')
|
||||
|
||||
form = RestaurantPageForm({
|
||||
'title': 'Buonasera',
|
||||
'slug': 'buonasera',
|
||||
'tags': "Italian, delicious",
|
||||
})
|
||||
self.assertTrue(form.is_valid())
|
||||
self.assertEqual(form.cleaned_data['tags'], ["Italian"])
|
||||
|
||||
|
||||
def clear_edit_handler(page_cls):
|
||||
def decorator(fn):
|
||||
|
|
Ładowanie…
Reference in New Issue