From a5c1feb6b057dc337bf65fcbb8c0ae5f4e785321 Mon Sep 17 00:00:00 2001 From: Tadas Dailyda Date: Sat, 14 Feb 2015 14:23:35 +0000 Subject: [PATCH] move BlogCategoryMenu to a separate menu.py --- djangocms_blog/cms_app.py | 26 +------------------------ djangocms_blog/menu.py | 40 ++------------------------------------- 2 files changed, 3 insertions(+), 63 deletions(-) diff --git a/djangocms_blog/cms_app.py b/djangocms_blog/cms_app.py index cefe215..fd9a38d 100644 --- a/djangocms_blog/cms_app.py +++ b/djangocms_blog/cms_app.py @@ -1,34 +1,10 @@ # -*- coding: utf-8 -*- from cms.app_base import CMSApp from cms.apphook_pool import apphook_pool -from cms.menu_bases import CMSAttachMenu -from menus.base import NavigationNode -from menus.menu_pool import menu_pool -from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _, get_language -from .models import BlogCategory +from .menu import BlogCategoryMenu -class BlogCategoryMenu(CMSAttachMenu): - name = _('Blog Category menu') - - def get_nodes(self, request): - nodes = [] - qs = BlogCategory.objects.translated(get_language()) - qs = qs.order_by('parent_id', 'translations__name') - for category in qs: - kwargs = { 'category': category.slug } - node = NavigationNode( - category.name, - category.get_absolute_url(), - category.pk, - category.parent_id - ) - nodes.append(node) - return nodes - -menu_pool.register_menu(BlogCategoryMenu) - class BlogApp(CMSApp): name = _('Blog') urls = ['djangocms_blog.urls'] diff --git a/djangocms_blog/menu.py b/djangocms_blog/menu.py index 9764691..f1760c4 100644 --- a/djangocms_blog/menu.py +++ b/djangocms_blog/menu.py @@ -1,8 +1,7 @@ # -*- coding: utf-8 -*- from cms.menu_bases import CMSAttachMenu -from menus.base import Modifier, NavigationNode +from menus.base import NavigationNode from menus.menu_pool import menu_pool -from django.db.models.signals import post_save, post_delete from django.utils.translation import ugettext_lazy as _, get_language from .models import BlogCategory @@ -13,7 +12,7 @@ class BlogCategoryMenu(CMSAttachMenu): def get_nodes(self, request): nodes = [] qs = BlogCategory.objects.translated(get_language()) - qs = qs.order_by('parent__id', 'translations__name') + qs = qs.order_by('parent_id', 'translations__name') for category in qs: kwargs = { 'category': category.slug } node = NavigationNode( @@ -27,38 +26,3 @@ class BlogCategoryMenu(CMSAttachMenu): menu_pool.register_menu(BlogCategoryMenu) - -class BlogNavModifier(Modifier): - """ - This navigation modifier makes sure that when - a particular blog post is viewed, - a corresponding category is selected in menu - """ - def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb): - if not post_cut: return nodes - if not hasattr(request, 'toolbar'): - return nodes - models = ('djangocms_blog.post', 'djangocms_blog.blogcategory') - model = request.toolbar.get_object_model() - if model not in models: - return nodes - if model == 'djangocms_blog.blogcategory': - cat = request.toolbar.obj - else: - cat = request.toolbar.obj.categories.first() - if not cat: return nodes - - for node in nodes: - if (node.namespace == BlogCategoryMenu.__name__ and - cat.pk == node.id): - node.selected = True - break - return nodes - -menu_pool.register_modifier(BlogNavModifier) - -def clear_menu_cache(**kwargs): - menu_pool.clear(all=True) - -post_save.connect(clear_menu_cache, sender=BlogCategory) -post_delete.connect(clear_menu_cache, sender=BlogCategory)