diff options
Diffstat (limited to 'ishtar/furnitures/views.py')
-rw-r--r-- | ishtar/furnitures/views.py | 76 |
1 files changed, 66 insertions, 10 deletions
diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index 96e84cc6f..5ea71cc86 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -23,7 +23,7 @@ Furnitures views from django.http import HttpResponse from django.template import RequestContext -from django.shortcuts import render_to_response +from django.shortcuts import render_to_response, redirect from django.utils.translation import ugettext, ugettext_lazy as _ from ishtar import settings @@ -37,24 +37,80 @@ def index(request): dct = {} return render_to_response('index.html', dct, context_instance=RequestContext(request)) -def action(request, action, obj_id=None, *args, **kwargs): + +def check_permission(request, action_slug, obj_id=None): + if obj_id: + return menu.items[action_slug].is_available(request.user, obj_id) + return menu.items[action_slug].can_be_available(request.user) + +''' +def base_action(request, action_slug, obj_id=None, *args, **kwargs): """ - Action management + Basic action management """ - if obj_id and not menu.items[action].is_available(request.user, obj_id) or \ - not menu.items[action].can_be_available(request.user): + if not check_permission(request, action_slug, obj_id): not_permitted_msg = ugettext(u"Operation not permitted.") return HttpResponse(not_permitted_msg) - request.session['CURRENT_ACTION'] = action + request.session['CURRENT_ACTION'] = action_slug + associated_wizard = action_slug + '_wizard' + dct = {} + print base_action globals_dct = globals() - if action in globals_dct: + if associated_wizard in globals_dct: + wizard = globals_dct[associated_wizard] + current_step = None + if wizard.id in request.session \ + and 'current_step' in request.session[wizard.id] \ + and request.session[wizard.id]['current_step']: + current_step = request.session[wizard.id]['current_step'].slug + else: + current_step = wizard.base_steps[0].slug + return action(request, action_slug, obj_id=obj_id, *args, **kwargs) + if obj_id: + return redirect('action', action_slug, current_step, obj_id) + return redirect('action', action_slug, current_step) + + if action_slug in globals_dct: return globals_dct[action](request, dct, obj_id, *args, **kwargs) return render_to_response('index.html', dct, context_instance=RequestContext(request)) +''' + +def action(request, action_slug, obj_id=None, *args, **kwargs): + """ + Action management + """ + if not check_permission(request, action_slug, obj_id): + not_permitted_msg = ugettext(u"Operation not permitted.") + return HttpResponse(not_permitted_msg) + request.session['CURRENT_ACTION'] = action_slug + associated_wizard = action_slug + '_wizard' + dct = {} + globals_dct = globals() + if associated_wizard in globals_dct: + wizard = globals_dct[associated_wizard] + if ('slug' not in kwargs or not kwargs['slug']): + current_step = None + if wizard.id in request.session \ + and 'current_step' in request.session[wizard.id] \ + and request.session[wizard.id]['current_step']: + current_step = request.session[wizard.id]['current_step'].slug + else: + current_step = wizard.base_steps[0].slug + return redirect('action_form', action_slug, current_step) + elif wizard.id in request.session: + for step in wizard.base_steps: + if step.slug == kwargs['slug']: + request.session[wizard.id]['current_step'] = step + if action_slug in globals_dct: + return globals_dct[action_slug](request, dct, obj_id, *args, **kwargs) + return render_to_response('index.html', dct, + context_instance=RequestContext(request)) -file_wizard = FileWizard([Step('1', _(u"General"), FileForm1), - Step('2', _(u"Localisation"), FileForm2)]) +file_creation_wizard = FileWizard([ + Step('general', _(u"General"), FileForm1), + Step('localisation', _(u"Localisation"), FileForm2)]) def file_creation(request, dct, obj_id, *args, **kwargs): - return file_wizard(request, *args, **kwargs) + return file_creation_wizard(request, *args, **kwargs) |