durusmail: qp: Re: Form reset?
Form reset?
2007-10-18
2007-10-29
2007-10-29
2007-10-29
2007-10-29
2007-10-30
2007-10-30
2007-10-30
2007-10-30
2007-10-30
Re: Form reset?
2007-10-30
2007-10-30
2007-10-30
2007-11-02
2007-11-19
Re: Form reset?
David K. Hess
2007-11-19
I've appended to this email a patch for clearing a form after it has
been processed so it can be rendered again in one request. After some
light unit testing, it seems to work well. Intended usage is:

form = self.build_some_form() # Form will post back to this exported
method.
if form.is_submitted() and not form.has_errors():
     # process form....
     form.clear()
form.render()

If you use the prefix keyword on the Form constructor, you can mix
many of these in one exported method.

Dave

---------------

--- form.qpy.orig       2007-11-16 17:39:01.000000000 -0600
+++ form.qpy    2007-11-16 18:54:05.000000000 -0600
@@ -200,6 +200,11 @@
                      has_errors =  True
          return has_errors

+    def clear(self):
+        request = get_request()
+        for widget in self:
+            widget.clear(request)
+
      def clear_errors(self):
          """Ensure that all components of the form have parsed
themselves.
          Clear any errors that might have occurred during parsing.

--- widget.qpy.orig     2007-11-16 17:47:33.000000000 -0600
+++ widget.qpy  2007-11-16 18:57:20.000000000 -0600
@@ -147,6 +147,15 @@
          else:
              self.value = None

+    def clear(self, request=None):
+        if request is None:
+            request = get_request()
+        if self.name in request.get_fields():
+            del request.get_fields()[self.name]
+        if self._parsed:
+            self._parse(request)
+
      def render_title [html] (self, title):
          if title:
              '\n'

reply