def edit_item(request, item_id): if not request.user.is_staff: raise Http403 item = Item.objects.get(pk=item_id) revision = item.get_latest(lang=get_language()) if request.method == 'POST': form = NewRevisionForm(request.POST, instance=revision) args = {'form': form, 'item': item} if form.is_valid(): # We want to save a new one form.instance.id = None # For now just assume that missing revision == missing content if revision is None: content = Content(item=item, language=get_language()) content.save() revision = form.save(commit=False) revision.content = content revision.save() else: form.save() # First iteration, at least news are shown on main page return redirect('/') else: form = NewRevisionForm(instance=revision) args = {'revision': revision, 'item': item, 'form': form} return render_to_response('edit_item.html', args, context_instance=RequestContext(request))