From: Gary P. <gar...@as...> - 2015-05-28 15:12:14
|
I don't know if anyone is watching this list, but I thought I'd give it a shot. We use Webware for Python to run our business Intranet. One new requirement is the ability to upload multiple files simultaneously. I've changed the "if fieldItems" portion of HTTPRequest.py in WebKit to allow this. In the existing 1.1.1 code: A single upload using enctype=multipart/form-data returns: {keyname: FieldStorage(file_object)} A multiple file upload returns: {keyname: [file_contents_as_string, other_file_contents_as_string]} It loses the FieldStorage objects because of a map() function. My change looks at the nature of the form values to see if file objects exist. If so, I avoid the map(), and maintain the original list of FieldStorage objects, which then is returned to the form handler for iteration & treatment as in a single file upload. How can I go about getting this reviewed, and into the official distribution? If at all? Please advise. Thank you. -Gary |
From: Christoph Z. <ci...@on...> - 2015-05-28 15:56:28
|
Hi Gary, thanks for the suggestion. I'm still maintaining Webware and will look into any suggestion made here, though it may take some time (currently on vacation). You can also post patches and requests to http://sourceforge.net/p/webware/feature-requests/ -- Christoph |
From: Gary P. <gar...@as...> - 2015-05-28 16:36:10
|
Hi, Christoph. I'm not in a rush, so whenever you are done with vacation, here are the relevant parts (complete with inane comments): # Webware 1.1.1, HTTPRequest.py, Lines 118-133 ############################## if fieldItems: for value in fieldItems: fields.setdefault(value.name, []).append(value) getValue = attrgetter('value') for key, value in fields.iteritems(): if len(value) > 1: value = map(getValue, value) else: value = value[0] if value.filename: if debug: print "Uploaded file found:", value.filename else: value = value.value fields[key] = value self._fieldStorage, self._fields = fieldStorage, fields # My proposed changes, starting Line 118 ############################## if fieldItems: for value in fieldItems: fields.setdefault(value.name, []).append(value) getValue = attrgetter('value') for key, value in fields.iteritems(): # IMPORTANT! value here is *always* a list, but it may contain only 1 member. # Are there multiple values for same key in the form? # This could be series of date pulldowns, or multiple file uploads. if len(value) > 1: # Analyze members of this list, set flag as appropriate IS_UPLOADS = False for listitem in value: try: if listitem.filename: # True for an uploaded file IS_UPLOADS = True except AttributeError: # [str].filename throws this pass # Check flag if IS_UPLOADS: # The existing list of FieldStorage objects is exactly what we want, so we alter nothing here. pass else: # Append the regular strings to the key's list. value = map(getValue, value) else: # Only one value for this key value = value[0] # Now, is this an upload? try: if value.filename: if debug: print "Uploaded file found:", value.filename else: value = value.value except AttributeError: # [str].filename throws this value = value.value fields[key] = value self._fieldStorage, self._fields = fieldStorage, fields Enjoy your holiday! Thanks, -Gary > On May 28, 2015, at 11:56, Christoph Zwerschke <ci...@on...> wrote: > > Hi Gary, > > thanks for the suggestion. I'm still maintaining Webware and will look > into any suggestion made here, though it may take some time (currently > on vacation). > > You can also post patches and requests to > http://sourceforge.net/p/webware/feature-requests/ > > -- Christoph > > ------------------------------------------------------------------------------ > _______________________________________________ > Webware-devel mailing list > Web...@li... > https://lists.sourceforge.net/lists/listinfo/webware-devel |
From: Christoph Z. <ci...@on...> - 2015-06-07 09:13:18
|
Am 28.05.2015 um 18:10 schrieb Gary Perez: > I'm not in a rush, so whenever you are done with vacation, here are > the relevant parts (complete with inane comments): Thanks, I simplified the code and committed the change to the trunk: http://svn.w4py.org/Webware/trunk/WebKit/HTTPRequest.py Let me know if this works for you. -- Christoph |
From: Gary P. <gar...@as...> - 2015-06-08 12:53:43
|
Hi, Christoph. I just tested it, and it seems to work perfectly. Thanks! -Gary > On Jun 7, 2015, at 5:13, Christoph Zwerschke <ci...@on...> wrote: > > Am 28.05.2015 um 18:10 schrieb Gary Perez: >> I'm not in a rush, so whenever you are done with vacation, here are >> the relevant parts (complete with inane comments): > > Thanks, I simplified the code and committed the change to the trunk: > > http://svn.w4py.org/Webware/trunk/WebKit/HTTPRequest.py > > Let me know if this works for you. > > -- Christoph > > ------------------------------------------------------------------------------ > _______________________________________________ > Webware-devel mailing list > Web...@li... > https://lists.sourceforge.net/lists/listinfo/webware-devel |