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 __init__(self, *args, **kwargs): super(CreateDocument, self).__init__(*args, **kwargs) choices = [(t._id, t.name) for t in Type.all()] self.fields['ptype'].choices = choices
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 __init__(self, *args, **kwargs): super(CreatePageType, self).__init__(*args, **kwargs) choices = [ ('type', _(u"Créer une page et un nouveau type")), ('context', _(u'Créer un contexte')), ('--', '--'), ('--', _(u'Créer une page à partir du type :')), ('--', '--'), ] choices += [(t._id, t.name) for t in Type.all()] self.fields['page_type'].choices =choices
def show_page(request, page): if page.doc_type == "context": content = render_template(page.body, context_instance=RequestContext(request)) return HttpResponse(content) else: try: t = Type.get(page.ctype) except ResourceNotFound: raise Http404() content = render_template(t.templates['show'], { "doc": page }, context_instance=RequestContext(request)) return HttpResponse(content) raise Http404()
def edit_content(request, page, create=False): try: t = Type.get(page.ctype) except ResourceNotFound: raise Http404() if request.POST and not create: f = EditContent(request.POST, type_instance=t, document_instance=page) if f.is_valid(): f.save() return HttpResponseRedirect(request.path) else: f = EditContent(type_instance=t, document_instance=page) return render_to_response("pages/page.html", { "f": f, "path": request.path }, context_instance=RequestContext(request))
def render(self, context): t = Type.by_name(self.type_name) if not t: if settings.DEBUG: return _("[%s n'existe pas]" % self.type_name) else: return '' items = Page.by_type(t._id) output = '' try: tpl = Template(t.templates['list']) context.update({"items": items}) output = tpl.render(context) except TemplateSyntaxError, e: if settings.DEBUG: return _("[Erreurs de syntaxe: %s]" % e) else: return ''
def new_document(request): if request.POST: fcreate = CreateDocument(request.POST) if fcreate.is_valid(): ptype = fcreate.cleaned_data['ptype'] t = Type.get(ptype) db = get_db("mtcompono") uuid = db.server.next_uuid() path = "/%s/%s" % (t.name, uuid) page = Page(ctype=ptype, urls=[path], author=request.user.username) page.save() redirect_path = "%s?edit=1" % path return HttpResponseRedirect(redirect_path) else: fcreate = CreateDocument() return render_to_response("pages/create_document.html", { "f": fcreate }, context_instance=RequestContext(request))
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") doc = {} if typeid and typeid is not None: doc = Type.get(typeid).to_json() return render_to_response("types/type.html", { "doc": json.dumps(doc), "editors": Group.objects.all() }, context_instance=RequestContext(request)) def pages_by_type(request, name): raise Http404()