#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (C) 2010 Étienne Loks # 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 . # See the file COPYING for details. """ Furnitures views """ from django.http import HttpResponse from django.template import RequestContext from django.shortcuts import render_to_response, redirect from django.utils.translation import ugettext, ugettext_lazy as _ from ishtar import settings from menus import menu from forms import Step, FileForm1, FileForm2, FileWizard def index(request): """ Main page """ dct = {} return render_to_response('index.html', dct, context_instance=RequestContext(request)) 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): """ Basic 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 = {} print base_action globals_dct = globals() 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_creation_wizard = FileWizard([ Step('general', _(u"General"), FileForm1), Step('localisation', _(u"Localisation"), FileForm2)]) def file_creation(request, dct, obj_id, *args, **kwargs): return file_creation_wizard(request, *args, **kwargs)