from django.http import HttpResponseRedirect def check_allowed(view_func): def _view(request, *args, **kwargs): code = request.GET.get('code') if code: # just change if we can try: ensemble = request.session.get('registered', {})[code.replace('-', '')] request.session['ensemble'] = ensemble except KeyError: # need to register this code return HttpResponseRedirect('/register?code=' + code) request.ensemble_id = request.session.get('ensemble') if request.ensemble_id is None: return HttpResponseRedirect('/register') return view_func(request, *args, **kwargs) _view.__name__ = view_func.__name__ _view.__dict__ = view_func.__dict__ _view.__doc__ = view_func.__doc__ return _view