diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2010-12-28 16:14:34 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2010-12-28 16:14:34 +0100 |
commit | 93c4a26b633285c1e95de5ba304916870a17aa5c (patch) | |
tree | cd7b61fdae8544992a0785a0d43dbdc3838ee9bc | |
parent | 804e72c38252ef75e0895413363c6a5126da3fb2 (diff) | |
download | Ishtar-93c4a26b633285c1e95de5ba304916870a17aa5c.tar.bz2 Ishtar-93c4a26b633285c1e95de5ba304916870a17aa5c.zip |
Management of actions
-rw-r--r-- | ishtar/furnitures/menus.py | 4 | ||||
-rw-r--r-- | ishtar/furnitures/views.py | 17 |
2 files changed, 16 insertions, 5 deletions
diff --git a/ishtar/furnitures/menus.py b/ishtar/furnitures/menus.py index 7ed0a2408..f96ff9280 100644 --- a/ishtar/furnitures/menus.py +++ b/ishtar/furnitures/menus.py @@ -38,12 +38,16 @@ class MenuItem: self.available = False def can_be_available(self, user): + if not self.access_controls: + return True for access_control in self.access_controls: if user.has_perm('furnitures.' + access_control): return True return False def is_available(self, user, obj=None): + if not self.access_controls: + return True for access_control in self.access_controls: if user.has_perm('furnitures.' + access_control, obj): return True diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index 5f1c032a5..29c6e11be 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -21,8 +21,10 @@ Furnitures views """ +from django.http import HttpResponse from django.template import RequestContext from django.shortcuts import render_to_response +from django.utils.translation import ugettext, ugettext_lazy as _ from ishtar import settings from menus import menu @@ -34,16 +36,21 @@ def index(request): dct = {} return render_to_response('index.html', dct, context_instance=RequestContext(request)) -def action(request, action): +def action(request, action, obj=None, step=None): """ - Main page + Action management """ - + if obj and not menu.items[action].is_available(request.user, obj) or \ + not menu.items[action].can_be_available(request.user): + not_permitted_msg = ugettext(u"Operation not permitted.") + return HttpResponse(not_permitted_msg) dct = {'current_action':action} + globals_dct = globals() + if action in globals_dct: + return globals_dct[action](request, dct, obj, step) return render_to_response('index.html', dct, context_instance=RequestContext(request)) -def file_creation(request): - dct = {'current_action':'file_creation'} +def file_creation(request, dct, obj, step): return render_to_response('index.html', dct, context_instance=RequestContext(request)) |