2015-02-14 14:23:35 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from cms.menu_bases import CMSAttachMenu
|
2015-02-14 14:23:35 +00:00
|
|
|
from menus.base import NavigationNode
|
2015-02-14 14:23:35 +00:00
|
|
|
from menus.menu_pool import menu_pool
|
2015-02-15 14:45:48 +00:00
|
|
|
from django.db.models.signals import post_save, post_delete
|
2015-02-14 14:23:35 +00:00
|
|
|
from django.utils.translation import ugettext_lazy as _, get_language
|
|
|
|
from .models import BlogCategory
|
|
|
|
|
|
|
|
|
|
|
|
class BlogCategoryMenu(CMSAttachMenu):
|
|
|
|
name = _('Blog Category menu')
|
|
|
|
|
|
|
|
def get_nodes(self, request):
|
|
|
|
nodes = []
|
|
|
|
qs = BlogCategory.objects.translated(get_language())
|
2015-02-14 14:23:35 +00:00
|
|
|
qs = qs.order_by('parent_id', 'translations__name')
|
2015-02-14 14:23:35 +00:00
|
|
|
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)
|
|
|
|
|
2015-02-15 14:45:48 +00:00
|
|
|
|
|
|
|
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)
|