Пример #1
0
def edit_type(request, typeid=None):
    """ Edit a page type """
    if not can_create(request.user):
        return HttpResponseForbidden()
    
    if request.POST:
        data = json.loads(request.raw_post_data)

        if not isinstance(data.get('editors'), list):
            # maybe it should be handled at js level
            # but we also want to make sur eit's a list
            data['editors'] = [data['editors']]
            
        old_t = Type.by_name(data['name'])
        
        if old_t and old_t._id != data.get("_id"):
            return HttpResponse(content=json.dumps({"error": True,
                    "reason": "conflict - type already created"}),
                    status="409")
                    
        typeid = data.pop('_id', "")
        typerev = data.pop('_rev', "")
        
        t = Type(**data)
        
        if typeid: t._doc['_id'] = typeid
        if typerev: t._doc['_rev'] = typerev
        
        try:
            t.save()
        except ResourceConflict, e:
            return HttpResponse(content=json.dumps({"error": True,
                    "reason": str(e)}), status="409")
        return HttpResponse(content=json.dumps({"ok": True, "id": t._id, 
            "rev": t._rev}), content_type="application/json")
Пример #2
0
def all_types(request):
    """ list all types """
    if not can_create(request.user):
        return HttpResponseForbidden()
    
    types = Type.all()
    return render_to_response("types/types.html", {
        "types": types
    }, context_instance=RequestContext(request))
Пример #3
0
def page_handler(request, path=None):
    """ main page handler """
    if path == "/" or not path:
        path = "/"
    elif path.endswith('/'): 
        path = path[:-1]
        
    page = Page.from_path(path)
    if page is None:
        if can_create(request.user):
            return create_page(request, path)
        raise Http404
        
    if request.REQUEST.get('edit') and can_edit(request.user, page):
        return edit_page(request, page)
    elif request.POST and can_edit(request.user, page):
        return edit_page(request, page)
    elif page.draft:
        if request.user.is_authenticated():
            return show_page(request, page)
        else:
            raise Http404
    else:
        return show_page(request, page)