def update(self): instance = self.instance parent = instance.parent() type = instance.content().meta_type typeinfo = type_registry.get(type) formclass = typeinfo['form'] slug = instance.slug() if self.post: self.context['form'] = form = formclass(parent=parent, data=self.request.POST, instance=instance.content()) if form.is_valid(): form.save() ## handle changed slug slug = form.cleaned_data['slug'] if slug != self.instance.slug(): self.instance.set_slug(slug) return self.redirect(instance.path, success="Updated") else: self.context['form'] = formclass(parent=parent, initial=dict(slug=slug), instance=instance.content()) return self.template("wheelcms_axe/update.html")
def formclass(self, data=None, instance=None): if not self.instance: return None type = self.instance.content().meta_type if not type: return None typeinfo = type_registry.get(type) parent = self.instance.parent() return typeinfo['form'](parent=parent, data=data, instance=instance)
def create(self, *a, **b): type = self.request.REQUEST.get('type') formclass = type_registry.get(type)['form'] parent = self.parent if self.post: self.form = formclass(data=self.request.POST, parent=parent) if self.form.is_valid(): ## form validation should handle slug uniqueness (?) p = self.form.save() slug = self.form.cleaned_data['slug'] sub = parent.add(slug) sub.set(p) return self.redirect(parent.path or '/', success="Ok") else: self.context['form'] = formclass() self.context['type'] = self.request.REQUEST['type'] return self.template("wheelcms_axe/create.html")