From 39558fd14114aa0dacd2f69decdd4489686534a3 Mon Sep 17 00:00:00 2001 From: Iacopo Spalletti Date: Wed, 31 Jul 2019 08:02:57 +0200 Subject: [PATCH] Use menu_empty_categories config for BlogCategoryPlugin --- cms_helper.py | 4 ++++ djangocms_blog/cms_plugins.py | 5 ++++- tests/test_plugins.py | 13 +++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/cms_helper.py b/cms_helper.py index 3446127f..ae7e5540 100755 --- a/cms_helper.py +++ b/cms_helper.py @@ -150,3 +150,7 @@ def setup(): if __name__ == '__main__': run() + +if __name__ == 'cms_helper': + # this is needed to run cms_helper in pycharm + setup() diff --git a/djangocms_blog/cms_plugins.py b/djangocms_blog/cms_plugins.py index 637cf186..79391d31 100644 --- a/djangocms_blog/cms_plugins.py +++ b/djangocms_blog/cms_plugins.py @@ -112,7 +112,10 @@ def render(self, context, instance, placeholder): qs = qs.filter( models.Q(blog_posts__sites__isnull=True) | models.Q(blog_posts__sites=site.pk) ) - context['categories'] = qs.distinct() + categories = qs.distinct() + if instance.app_config and not instance.app_config.menu_empty_categories: + categories = qs.filter(blog_posts__isnull=False).distinct() + context['categories'] = categories return context diff --git a/tests/test_plugins.py b/tests/test_plugins.py index a38dc999..91ce47c8 100644 --- a/tests/test_plugins.py +++ b/tests/test_plugins.py @@ -289,3 +289,16 @@ def test_blog_category_plugin(self): with self.settings(SITE_ID=2): context = plugin_class.render(context, plugin, ph) self.assertEqual(list(context['categories']), [self.category_1, new_category]) + + empty_category = BlogCategory.objects.create( + name='empty 2', app_config=self.app_config_1 + ) + self.app_config_1.app_data.config.menu_empty_categories = False + self.app_config_1.save() + context = plugin_class.render(context, plugin, ph) + self.assertEqual(list(context['categories']), [self.category_1, new_category]) + + self.app_config_1.app_data.config.menu_empty_categories = True + self.app_config_1.save() + context = plugin_class.render(context, plugin, ph) + self.assertEqual(list(context['categories']), [self.category_1, new_category, empty_category])