From 85902d111db2a11c4ac93344a615a230e9124c76 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Wed, 11 Feb 2015 12:39:44 +0000 Subject: [PATCH] implement SnippetChooserBlock --- wagtail/wagtailsnippets/blocks.py | 17 +++++++++++++++++ wagtail/wagtailsnippets/widgets.py | 6 +++--- 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 wagtail/wagtailsnippets/blocks.py diff --git a/wagtail/wagtailsnippets/blocks.py b/wagtail/wagtailsnippets/blocks.py new file mode 100644 index 000000000..560cdf7f7 --- /dev/null +++ b/wagtail/wagtailsnippets/blocks.py @@ -0,0 +1,17 @@ +from __future__ import unicode_literals + +from django.utils.functional import cached_property +from django.contrib.contenttypes.models import ContentType + +from wagtail.wagtailadmin.blocks import ChooserBlock + +class SnippetChooserBlock(ChooserBlock): + def __init__(self, target_model, **kwargs): + super(SnippetChooserBlock, self).__init__(**kwargs) + self.target_model = target_model + + @cached_property + def widget(self): + from wagtail.wagtailsnippets.widgets import AdminSnippetChooser + content_type = ContentType.objects.get_for_model(self.target_model) + return AdminSnippetChooser(content_type) diff --git a/wagtail/wagtailsnippets/widgets.py b/wagtail/wagtailsnippets/widgets.py index 611efc40f..8c58e16f0 100644 --- a/wagtail/wagtailsnippets/widgets.py +++ b/wagtail/wagtailsnippets/widgets.py @@ -22,10 +22,10 @@ class AdminSnippetChooser(AdminChooser): self.target_content_type = content_type def render_html(self, name, value, attrs): - original_field_html = super(AdminSnippetChooser, self).render_html(name, value, attrs) - model_class = self.target_content_type.model_class() - instance = self.get_instance(model_class, value) + instance, value = self.get_instance_and_id(model_class, value) + + original_field_html = super(AdminSnippetChooser, self).render_html(name, value, attrs) return render_to_string("wagtailsnippets/widgets/snippet_chooser.html", { 'widget': self,