diff options
author | Anuja <anujag@anujag-Latitude-D630.(none)> | 2012-03-21 17:34:34 +0530 |
---|---|---|
committer | Anuja <anujag@anujag-Latitude-D630.(none)> | 2012-03-21 17:34:34 +0530 |
commit | 874fceac6498f2ba733c433b964f9ce5975d6a69 (patch) | |
tree | aee7c168a44287d5b8ec22582d654b970eb6108e /build/lib.linux-i686-2.6/gstudio/plugins/menu.py | |
parent | 9d76c138b63828b549b33fe1b9a8ad4ab3dd8d86 (diff) | |
download | gnowsys-874fceac6498f2ba733c433b964f9ce5975d6a69.tar.gz |
Changes made on model files and search files
Diffstat (limited to 'build/lib.linux-i686-2.6/gstudio/plugins/menu.py')
-rw-r--r-- | build/lib.linux-i686-2.6/gstudio/plugins/menu.py | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/build/lib.linux-i686-2.6/gstudio/plugins/menu.py b/build/lib.linux-i686-2.6/gstudio/plugins/menu.py new file mode 100644 index 0000000..d03b762 --- /dev/null +++ b/build/lib.linux-i686-2.6/gstudio/plugins/menu.py @@ -0,0 +1,198 @@ +# Copyright (c) 2011, 2012 Free Software Foundation + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +# This project incorporates work covered by the following copyright and permission notice: + +# Copyright (c) 2009, Julien Fache +# All rights reserved. + +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: + +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of the author nor the names of other +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. + +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +# OF THE POSSIBILITY OF SUCH DAMAGE. + +# Copyright (c) 2011, 2012 Free Software Foundation + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + + +"""Menus for gstudio.plugins""" +from django.core.urlresolvers import reverse +from django.utils.translation import ugettext_lazy as _ + +from menus.base import Modifier +from menus.base import NavigationNode +from menus.menu_pool import menu_pool +from cms.menu_bases import CMSAttachMenu + +from gstudio.models import Nodetype +from gstudio.models import Author +from gstudio.models import Metatype +from gstudio.managers import tags_published +from gstudio.plugins.settings import HIDE_NODETYPE_MENU + + +class NodetypeMenu(CMSAttachMenu): + """Menu for the nodetypes organized by archives dates""" + name = _('Gstudio Nodetype Menu') + + def get_nodes(self, request): + """Return menu's node for nodetypes""" + nodes = [] + archives = [] + attributes = {'hidden': HIDE_NODETYPE_MENU} + for nodetype in Nodetype.published.all(): + year = nodetype.creation_date.strftime('%Y') + month = nodetype.creation_date.strftime('%m') + month_text = nodetype.creation_date.strftime('%b') + day = nodetype.creation_date.strftime('%d') + + key_archive_year = 'year-%s' % year + key_archive_month = 'month-%s-%s' % (year, month) + key_archive_day = 'day-%s-%s-%s' % (year, month, day) + + if not key_archive_year in archives: + nodes.append(NavigationNode( + year, reverse('gstudio_nodetype_archive_year', args=[year]), + key_archive_year, attr=attributes)) + archives.append(key_archive_year) + + if not key_archive_month in archives: + nodes.append(NavigationNode( + month_text, + reverse('gstudio_nodetype_archive_month', args=[year, month]), + key_archive_month, key_archive_year, + attr=attributes)) + archives.append(key_archive_month) + + if not key_archive_day in archives: + nodes.append(NavigationNode( + day, reverse('gstudio_nodetype_archive_day', + args=[year, month, day]), + key_archive_day, key_archive_month, + attr=attributes)) + archives.append(key_archive_day) + + nodes.append(NavigationNode(nodetype.title, nodetype.get_absolute_url(), + nodetype.pk, key_archive_day)) + return nodes + + +class MetatypeMenu(CMSAttachMenu): + """Menu for the metatypes""" + name = _('Gstudio Metatype Menu') + + def get_nodes(self, request): + """Return menu's node for metatypes""" + nodes = [] + nodes.append(NavigationNode(_('Metatypes'), + reverse('gstudio_metatype_list'), + 'metatypes')) + for metatype in Metatype.objects.all(): + nodes.append(NavigationNode(metatype.title, + metatype.get_absolute_url(), + metatype.pk, 'metatypes')) + return nodes + + +class AuthorMenu(CMSAttachMenu): + """Menu for the authors""" + name = _('Gstudio Author Menu') + + def get_nodes(self, request): + """Return menu's node for authors""" + nodes = [] + nodes.append(NavigationNode(_('Authors'), + reverse('gstudio_author_list'), + 'authors')) + for author in Author.published.all(): + nodes.append(NavigationNode(author.username, + reverse('gstudio_author_detail', + args=[author.username]), + author.pk, 'authors')) + return nodes + + +class TagMenu(CMSAttachMenu): + """Menu for the tags""" + name = _('Gstudio Tag Menu') + + def get_nodes(self, request): + """Return menu's node for tags""" + nodes = [] + nodes.append(NavigationNode(_('Tags'), reverse('gstudio_tag_list'), + 'tags')) + for tag in tags_published(): + nodes.append(NavigationNode(tag.name, + reverse('gstudio_tag_detail', + args=[tag.name]), + tag.pk, 'tags')) + return nodes + + +class NodetypeModifier(Modifier): + """Menu Modifier for nodetypes, + hide the MenuNodetype in navigation, not in breadcrumbs""" + + def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb): + """Modify nodes of a menu""" + if breadcrumb: + return nodes + for node in nodes: + if node.attr.get('hidden'): + nodes.remove(node) + return nodes + + +menu_pool.register_menu(NodetypeMenu) +menu_pool.register_menu(MetatypeMenu) +menu_pool.register_menu(AuthorMenu) +menu_pool.register_menu(TagMenu) +menu_pool.register_modifier(NodetypeModifier) |