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")
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))
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)