def ajax_submit_and_validate(self):

        status, errors = self.form.view.handle_form(
            self.form, self.request.params)

        self.context._changed = datetime.now()

        self.form.submission.submit(self.form, self.context, self.request)

        results = pyramidformview.ajax_validate(self, "xml", True)

        self.request.registry.notify(ContentChanged(self.context))
        return results
Example #2
0
    def ajax_submit_and_validate(self):

        redirect = None

        if "cancel" in self.request.params:
            redirect = self.cancel_add_redirect
        else:
            status, errors = self.form.view.handle_form(
                self.form, self.request.params)
            self.form.submission.submit(self.form, self.context, self.request)

            if status == "completed":
                # finalize the temporary object
                parent = self.context.__parent__
                content_id = parent.generate_content_id(self.context.base_id)
                noLongerProvides(self.context, ITemporaryObject)
                self.request.registry.notify(
                    TemporaryObjectFinalized(self.context, self.request))
                parent.rename_content(self.context.id, content_id)
                self.request.registry.notify(
                    ContentAdded(self.context, parent, self.request))
                redirect = self.after_add_redirect

        if redirect:
            doc = Document()
            root = doc.createElement("validation")
            doc.appendChild(root)
            command = doc.createElement("command")
            command.setAttribute("selector", "")
            command.setAttribute("name", 'redirect')
            command.setAttribute("value", "%s" % redirect)
            root.appendChild(command)
            results = doc.toprettyxml(indent="  ").encode('utf-8')
        else:
            results = pyramidformview.ajax_validate(self, "xml", True)

        return results