def edit_item(request, ct_id,obj_id, slug, template_name='publisher/editor.html'):
    obj = get_admin_object(ct_id, obj_id)
    formclass = get_object_form(obj.__class__)
    if request.POST:        
        form = formclass(request.POST, request.FILES, instance=obj)
        if form.is_valid():
            item = form.save()
            messages.add_message(request, messages.SUCCESS, 
                                 'the {type}: {title} has been saved'.format(type=item.get_ct_proxy(),
                                 title=item.title))            
            return HttpResponseRedirect(item.get_absolute_url())
        else:
            return render_to_response(template_name, 
                                      {'form':form}, 
                                      context_instance=RequestContext(request))
    else:
        if request.user.is_staff:            
            form = formclass(initial={
                                'title':obj.title,
                                'tag_line':obj.tag_line,
                                'content':obj.get_html_content(),
                                'summary':obj.summary,
                                'status':obj.status,
                                'author':obj.author.pk,
                                'image':obj.image,
                                'crop_from':obj.crop_from       
                             })        
            if request.is_ajax():
                return HttpResponse(form.as_ul(), mimetype='text/html')
            else:
                return render_to_response(template_name, 
                                          {'form':form}, 
                                          context_instance=RequestContext(request))
        else:
            return HttpResponseForbidden()
def create_item(request, ct_id):
    ctype = ContentType.objects.get(pk=ct_id)
    formclass = get_object_form(ctype.model_class())
    
    return render_to_response('publisher/editor.html', {'form':formclass()}, context_instance=RequestContext(request))