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 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 ''