summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2010-12-27 19:28:30 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2010-12-27 19:28:30 +0100
commita4f635716015c9f5ed5e6bcd2564da49a2b7f458 (patch)
tree81a1d5b05161182a1686f8b2f530d36cb66bb6a1
parenta8f2bf3258897d1724ac21df4803880939ad334b (diff)
downloadIshtar-a4f635716015c9f5ed5e6bcd2564da49a2b7f458.tar.bz2
Ishtar-a4f635716015c9f5ed5e6bcd2564da49a2b7f458.zip
Basic work on menus (refs #50)
-rw-r--r--ishtar/furnitures/context_processors.py7
-rw-r--r--ishtar/furnitures/menus.py70
-rw-r--r--ishtar/furnitures/views.py7
-rw-r--r--ishtar/templates/base.html12
-rw-r--r--ishtar/templates/registration/logout.html2
-rw-r--r--ishtar/urls.py4
6 files changed, 99 insertions, 3 deletions
diff --git a/ishtar/furnitures/context_processors.py b/ishtar/furnitures/context_processors.py
index ae1bbc36d..e187d2f76 100644
--- a/ishtar/furnitures/context_processors.py
+++ b/ishtar/furnitures/context_processors.py
@@ -18,10 +18,17 @@
# See the file COPYING for details.
from ishtar import settings
+from menus import Menu
def get_base_context(request):
dct = {}
if settings.APP_NAME:
dct["APP_NAME"] = settings.APP_NAME
+ if 'MENU' not in request.session or \
+ request.session['MENU'].user != request.user:
+ menu = Menu(request.user)
+ menu.init()
+ request.session['MENU'] = menu
+ dct['MENU'] = request.session['MENU']
return dct
diff --git a/ishtar/furnitures/menus.py b/ishtar/furnitures/menus.py
new file mode 100644
index 000000000..5a2446f79
--- /dev/null
+++ b/ishtar/furnitures/menus.py
@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2010 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU 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 General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# See the file COPYING for details.
+
+"""
+Menus
+"""
+
+from django.utils.translation import ugettext_lazy as _
+
+class SectionItem:
+ def __init__(self, idx, label, childs=[]):
+ self.idx = idx
+ self.label = label
+ self.childs = childs
+ self.available = False
+
+class MenuItem:
+ def __init__(self, idx, label, groups=[]):
+ self.idx = idx
+ self.label = label
+ self.groups = groups
+ self.available = False
+
+ def is_available(self, user):
+ return True
+
+class Menu:
+ def __init__(self, user):
+ self.user = user
+ self.initialized = False
+ self.childs = [
+ SectionItem('file_management', _(u"File management"),
+ childs=[
+ MenuItem('file_creation', _(u"File creation"),
+ groups=['administrator']),
+ MenuItem('file_modification', _(u"File modification"),
+ groups=['administrator']),
+ MenuItem('file_deletion', _(u"File deletion"),
+ groups=['administrator']),
+ ]),
+]
+
+ def init(self):
+ if self.initialized:
+ return
+ for main_menu in self.childs:
+ main_menu.available = False
+ for child in main_menu.childs:
+ child.available = child.is_available(self.user)
+ if child.available:
+ main_menu.available = True
+ self.initialized = True
+
+
diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py
index 9ec293ee8..cce399d1f 100644
--- a/ishtar/furnitures/views.py
+++ b/ishtar/furnitures/views.py
@@ -33,4 +33,11 @@ def index(request):
dct = {}
return render_to_response('index.html', dct,
context_instance=RequestContext(request))
+def action(request, action):
+ """
+ Main page
+ """
+ dct = {}
+ return render_to_response('index.html', dct,
+ context_instance=RequestContext(request))
diff --git a/ishtar/templates/base.html b/ishtar/templates/base.html
index e26a5ddab..ff9744391 100644
--- a/ishtar/templates/base.html
+++ b/ishtar/templates/base.html
@@ -29,7 +29,17 @@
{% block context %}{% endblock %}
</div>
<div id="main_menu">
- {% block menu %}{% endblock %}
+ <ul>
+ {% for section in MENU.childs %}
+ <li>{{section.label}}
+ <ul>
+ {% for menu_item in section.childs %}
+ <li><a href='{% url action menu_item.idx%}'>{{menu_item.label}}</a></li>
+ {% endfor %}
+ </ul>
+ </li>
+ {% endfor %}
+ </ul>
</div>
<div id="content">
{% block content %}{% endblock %}
diff --git a/ishtar/templates/registration/logout.html b/ishtar/templates/registration/logout.html
index 399d8c343..029a0c25b 100644
--- a/ishtar/templates/registration/logout.html
+++ b/ishtar/templates/registration/logout.html
@@ -2,7 +2,7 @@
{% load i18n %}
{% block content %}
-<div class='form'>
+<div class='info'>
<p>{% trans "Logged out" %}</p>
</div>
{% endblock %}
diff --git a/ishtar/urls.py b/ishtar/urls.py
index 9f58a3e56..b9369ce06 100644
--- a/ishtar/urls.py
+++ b/ishtar/urls.py
@@ -12,4 +12,6 @@ urlpatterns = patterns('',
(BASE_URL + r'admin/', include(admin.site.urls)),
)
urlpatterns += patterns('ishtar.furnitures.views',
- url(BASE_URL + '$', 'index', name='start'),)
+ url(BASE_URL + '$', 'index', name='start'),
+ url(BASE_URL + '(?P<action>\w+)/$', 'action', name='action'),
+ )