def add_view(context, request): import formish import schemaish import schema root = context.getRoot() kind = request.GET['content'] new_cls = root.get_model(kind) if new_cls is None: logging.error("""Can't find registered class for kind '%s'""" % self.kind) raise KeyError("""Can't find registered class for kind '%s'""" % self.kind) fake_obj = new_cls() structure = zope.component.getAdapter(fake_obj, schema.IStructure) form = formish.Form(structure, name='form') applyWidgets(structure, form, context, request, ignore_readonly=True) defaults = schema.load_defaults(fake_obj, structure) form.defaults = defaults if request.method == 'GET': pass elif request.method == 'POST': try: changes = form.validate(request) name = changes.pop('name') new_obj = root.createContent(name, kind, context, request, **changes) return Redirect(new_obj.absolute_url(request) + 'view') except formish.validation.FormError, e: pass
def add_view(context, request): import formish import schemaish import schema root = context.getRoot() kind = request.GET['content'] new_cls = root.get_model(kind) if new_cls is None: logging.error("""Can't find registered class for kind '%s'""" % self.kind) raise KeyError("""Can't find registered class for kind '%s'""" % self.kind) fake_obj = new_cls() structure = zope.component.getAdapter(fake_obj,schema.IStructure) form = formish.Form(structure,name='form') applyWidgets(structure,form,context,request,ignore_readonly=True) defaults = schema.load_defaults(fake_obj,structure) form.defaults = defaults if request.method == 'GET': pass elif request.method == 'POST': try: changes = form.validate(request) name = changes.pop('name') new_obj = root.createContent(name,kind,context,request,**changes) return Redirect(new_obj.absolute_url(request)+'view') except formish.validation.FormError,e: pass
def edit_view(context, request): import formish import schemaish import schema structure = zope.component.getAdapter(context, schema.IStructure) form = formish.Form(structure, name='form') applyWidgets(structure, form, context, request) defaults = schema.load_defaults(context, structure) form.defaults = defaults if request.method == 'GET': pass elif request.method == 'POST': try: changes = form.validate(request) # Edit forms that don't include the a new file upload # end up with a schemaish.type.File which has no file # this causes problems later. So set it to None that # way the field won't get updated. # Need to find an alternate marker, as values deleted also # end up as None for key in changes: if isinstance(changes[key], schemaish.type.File): if changes[key].file is None: changes[key] = None context.applyChanges(changes) context.clearCache() return Redirect(context.absolute_url(request) + 'view') except formish.validation.FormError, e: pass
def edit_view(context, request): import formish import schemaish import schema structure = zope.component.getAdapter(context,schema.IStructure) form = formish.Form(structure,name='form') applyWidgets(structure,form,context,request) defaults = schema.load_defaults(context,structure) form.defaults = defaults if request.method == 'GET': pass elif request.method == 'POST': try: changes = form.validate(request) # Edit forms that don't include the a new file upload # end up with a schemaish.type.File which has no file # this causes problems later. So set it to None that # way the field won't get updated. # Need to find an alternate marker, as values deleted also # end up as None for key in changes: if isinstance(changes[key],schemaish.type.File): if changes[key].file is None: changes[key] = None context.applyChanges(changes) context.clearCache() return Redirect(context.absolute_url(request)+'view') except formish.validation.FormError,e: pass