summaryrefslogtreecommitdiff
path: root/build/lib.linux-i686-2.6/gstudio/plugins/menu.py
diff options
context:
space:
mode:
authorAnuja <anujag@anujag-Latitude-D630.(none)>2012-03-21 17:34:34 +0530
committerAnuja <anujag@anujag-Latitude-D630.(none)>2012-03-21 17:34:34 +0530
commit874fceac6498f2ba733c433b964f9ce5975d6a69 (patch)
treeaee7c168a44287d5b8ec22582d654b970eb6108e /build/lib.linux-i686-2.6/gstudio/plugins/menu.py
parent9d76c138b63828b549b33fe1b9a8ad4ab3dd8d86 (diff)
downloadgnowsys-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.py198
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)