def viewed(request): template = 'viewed.html' posts = Post.objects.all() formclass = action_formset(request, posts, Post, permissions=['actions.delete_post', 'actions.change_post']) form = formclass(request.POST or None) if request.method == 'POST': if form.is_valid(): qset = form.act(form.cleaned_data['action'], form.cleaned_data['items']) if 'response' in qset: return qset['response'] return HttpResponseRedirect(reverse('url_viewed')) else: return render_to_response(template, {'posts': posts, 'form': form}, context_instance=RequestContext(request)) return render_to_response(template, {'posts': posts, 'form': form}, context_instance=RequestContext(request))
def act(request, app_n_model): """ execute chosen action """ app, model = app_n_model.split('.') ct = get_content_type_or_404(app_label=app, model=model) referer = request.META.get('HTTP_REFERER', '/') if request.method == 'POST': qset = ct.model_class().objects.filter(pk__in=(request.POST.getlist('items'))) formclass = action_formset(request, qset, ct.model_class()) form = formclass(request.POST) if form.is_valid(): #items = ct.model_class().objects.filter(pk__in=(request.POST.get('items', None))) qset = form.act(form.cleaned_data['action'], form.cleaned_data['items']) if 'response' in qset: request.session['ref'] = request.META.get('HTTP_REFERER', '/') request.session.save() return qset['response'] else: ref = request.session.get('ref', '/') if 'ref' in request.session: del request.session['ref'] request.session.save() return HttpResponseRedirect(ref) else: return HttpResponseRedirect(referer) return HttpResponseRedirect(referer)