]> granicus.if.org Git - python/commitdiff
In read_multi, allow a subclass to override the class we instantiate
authorGuido van Rossum <guido@python.org>
Wed, 9 Dec 1998 22:16:46 +0000 (22:16 +0000)
committerGuido van Rossum <guido@python.org>
Wed, 9 Dec 1998 22:16:46 +0000 (22:16 +0000)
when we create a recursive instance, by setting the class variable
'FieldStorageClass' to the desired class.  By default, this is set to
None, in which case we use self.__class__ (as before).

Lib/cgi.py

index aaaded529bf07968972674ea08974f38af921668..108310ebd58d62bb0d19c6f313ace783605e84e5 100755 (executable)
@@ -919,16 +919,19 @@ class FieldStorage:
                 self.list.append(MiniFieldStorage(key, value))
         self.skip_lines()
 
+    FieldStorageClass = None
+
     def read_multi(self, environ, keep_blank_values, strict_parsing):
         """Internal: read a part that is itself multipart."""
         self.list = []
-        part = self.__class__(self.fp, {}, self.innerboundary,
-                              environ, keep_blank_values, strict_parsing)
+        klass = self.FieldStorageClass or self.__class__
+        part = klass(self.fp, {}, self.innerboundary,
+                     environ, keep_blank_values, strict_parsing)
         # Throw first part away
         while not part.done:
             headers = rfc822.Message(self.fp)
-            part = self.__class__(self.fp, headers, self.innerboundary,
-                                  environ, keep_blank_values, strict_parsing)
+            part = klass(self.fp, headers, self.innerboundary,
+                         environ, keep_blank_values, strict_parsing)
             self.list.append(part)
         self.skip_lines()