)]}'
{"id":"openstack%2Fswift~792812","triplet_id":"openstack%2Fswift~master~I0a921afc481ef5b98cd5974c45d4b1d3e2a15731","project":"openstack/swift","branch":"master","topic":"bug/1916017","hashtags":[],"change_id":"I0a921afc481ef5b98cd5974c45d4b1d3e2a15731","subject":"Individual content types for multi form upload","status":"MERGED","created":"2021-05-24 13:23:19.000000000","updated":"2021-05-25 01:43:19.000000000","submitted":"2021-05-25 01:41:48.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"792812-bug/1916017","meta_rev_id":"b00de336ce58d9b799e13c031a67d9be4438b8bc","_number":792812,"virtual_id_number":792812,"owner":{"_account_id":33503,"name":"Konrad Kügler","email":"swamblumat-eclipsebugs@yahoo.de","username":"kkuegler"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:gate","value":2,"date":"2021-05-25 01:41:45.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2021-05-25 00:20:39.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2021-05-25 00:20:39.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2021-05-24 14:31:27.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2021-05-25 00:20:39.000000000","updated_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"reviewer":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"state":"REVIEWER"}],"messages":[{"id":"e881b50adade1b702e1770927f99a9ee54ecd18c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":33503,"name":"Konrad Kügler","email":"swamblumat-eclipsebugs@yahoo.de","username":"kkuegler"},"date":"2021-05-24 13:23:19.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"f4aa327483d33a7b397bebda118a7561d2cbfa4f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-05-24 14:31:27.000000000","message":"Patch Set 1: Verified-1\n\n(2 comments)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\n\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/cd4d819cbbd24e459bf521816bfb6e07 : SUCCESS in 10m 39s\n- grenade https://zuul.opendev.org/t/openstack/build/a537401bb2e64327a9da39a3708c6fc9 : SUCCESS in 57m 45s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/13f9337613474db983ee1010e51e0a68 : SUCCESS in 43m 54s\n- swift-build-image https://zuul.opendev.org/t/openstack/build/0dbcbdad50c64d319e7121af4dc7c71a : SUCCESS in 10m 47s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/cb0983f3acbc49279384b9dbd517d24d : SUCCESS in 7m 38s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/101a24d431574a9f866113cb35500220 : SUCCESS in 16m 13s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/d82e781bdb3946049402bacaeb4e5485 : SUCCESS in 12m 36s\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/4dfd17e2b9b94e7b94a8412ade76f2a1 : SUCCESS in 12m 30s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/63ca6e26c29c4a2b94c8a68b87e30d1b : SUCCESS in 27m 59s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/020390348b414ffa93dc487b8ddec374 : SUCCESS in 27m 10s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/6d6a3c0d17dd482fb3bd7e31c98f6f0f : SUCCESS in 14m 36s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/335c182834f14420b26d3fedd5cef938 : SUCCESS in 15m 25s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/12ccca38daca47ec9786e83a2c70d8f6 : SUCCESS in 34m 38s\n- swift-tox-func-py37 https://zuul.opendev.org/t/openstack/build/801ab024eecf4c22bce2041eea25722e : SUCCESS in 21m 33s\n- swift-tox-func-encryption-py37 https://zuul.opendev.org/t/openstack/build/45b260ba09374703ba83c8a6c8681e27 : SUCCESS in 14m 32s\n- swift-tox-func-ec-py37 https://zuul.opendev.org/t/openstack/build/ff37692a55dd470fa34c09448b83e2a8 : SUCCESS in 14m 36s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/045a797bb6994a86a0231ad7ce1ec596 : SUCCESS in 5m 54s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/fa40e03f16374ccd8d998e4b9e304880 : SUCCESS in 19m 47s (non-voting)\n- swift-probetests-centos-7 https://zuul.opendev.org/t/openstack/build/cb0dca8dd8be4c60a579a480a99d77dd : SUCCESS in 50m 13s\n- swift-probetests-centos-8 https://zuul.opendev.org/t/openstack/build/efdc790fac0f4c35855485144b5c6c04 : SUCCESS in 59m 00s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/6261a703addb442cab2f4a32b5e9bff6 : SUCCESS in 28m 47s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/091192f50afc423884dbdd96811de135 : SUCCESS in 28m 40s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/73b2de755cfc422eb3969a97aca515b0 : SUCCESS in 21m 55s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/0742ee65afb146c59703a1e5d3e238fa : FAILURE in 4m 58s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/c08fa1d08eb84e439f0bc915c1611936 : FAILURE in 23m 19s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/194158cdf4604fdebc5b4b4592e659d2 : SUCCESS in 37m 18s","accounts_in_message":[],"_revision_number":1},{"id":"936b6863e62c9594348aa34811ffb951ff511635","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":33503,"name":"Konrad Kügler","email":"swamblumat-eclipsebugs@yahoo.de","username":"kkuegler"},"date":"2021-05-24 19:55:39.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"d74ad23da3e30d41d201115343fcfade742806a2","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-05-24 20:55:17.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/394110120e9a470a8430da8509306254 : SUCCESS in 7m 22s\n- grenade https://zuul.opendev.org/t/openstack/build/bd66f70112fa41bfa31a782ac8fb5c48 : SUCCESS in 58m 39s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/7036212552da4fb9b2f34de7c6e417ec : SUCCESS in 31m 54s\n- swift-build-image https://zuul.opendev.org/t/openstack/build/ee447589460c42cfb804439319a6ad5a : SUCCESS in 9m 06s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/b31c8f6c2d6f4c15b0c0ba51efa1b809 : SUCCESS in 6m 54s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/04e3f11577e7450d9ef6da3d393a50c3 : SUCCESS in 19m 57s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/7755caae49864504945a5f4f2a12bbe0 : SUCCESS in 17m 44s\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/38d396deb80048af8ec01376eead334f : SUCCESS in 12m 18s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/00c912024ab44f2da9f76ab3627a2f43 : SUCCESS in 19m 20s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/ce2c0310c7084bddb8f1fc4375b3da52 : SUCCESS in 15m 53s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/e9f7f83d6ec546d7b2a60767ec6dcc9e : SUCCESS in 15m 54s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/93a5f65c7b11454f9d8c1b9cc140734e : SUCCESS in 24m 09s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/c1db1e41d10149d4bf472d229d5119ea : SUCCESS in 21m 26s\n- swift-tox-func-py37 https://zuul.opendev.org/t/openstack/build/db153073f7c24c8eac07b1529cbcd302 : SUCCESS in 23m 40s\n- swift-tox-func-encryption-py37 https://zuul.opendev.org/t/openstack/build/ed2cdb556d074167b6fc12033b46f51c : SUCCESS in 16m 52s\n- swift-tox-func-ec-py37 https://zuul.opendev.org/t/openstack/build/c46042ae5dcb4a7db8ec88edf1ceb432 : SUCCESS in 14m 37s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/f1bd264742db4471a6d23327eded7e87 : SUCCESS in 6m 31s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/a4a5d8a14e9e4b4b9cc91fd2f63d2343 : SUCCESS in 21m 18s (non-voting)\n- swift-probetests-centos-7 https://zuul.opendev.org/t/openstack/build/81e547aac94948f78d9fd88500300b2a : SUCCESS in 39m 51s\n- swift-probetests-centos-8 https://zuul.opendev.org/t/openstack/build/314e31b70d1340c1be50b4b955d92669 : SUCCESS in 52m 55s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/c088171261fd4c43b6352cabfa5029e6 : SUCCESS in 34m 21s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/c7fc8c5abb87403c9fabe34ca962f35e : SUCCESS in 25m 05s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/49636867d8244a9c97fcd4cc01b2158e : SUCCESS in 14m 02s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/969c6566d3284990aa059e806da09cd6 : SUCCESS in 7m 00s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/971d8f61bb864a1fb4b6c00b64f155dd : SUCCESS in 18m 20s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/e5163c6c9e2d43dd92c8b1fb036fdfb0 : SUCCESS in 39m 48s","accounts_in_message":[],"_revision_number":2},{"id":"c9a1760afa60cae8eb5ecd0d3eeb12f2b78a4a43","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2021-05-25 00:20:39.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1\n\nThanks! LGTM","accounts_in_message":[],"_revision_number":2},{"id":"b7f6a8b7c0c610e1093e1bf2ef9c552a7be0d9ab","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-05-25 00:20:57.000000000","message":"Patch Set 2: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":2},{"id":"fef1432614f7f6403d17283af2c0029783d342a7","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-05-25 01:41:45.000000000","message":"Patch Set 2: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e8e59a11e02a46159fdbd096bbe4ba69 : SUCCESS in 12m 10s\n- grenade https://zuul.opendev.org/t/openstack/build/ba1c7a39c6214338845ca1553ca21abf : SUCCESS in 52m 01s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/058f29b4e5e04bf7b0c10f97eb7c8b30 : SUCCESS in 52m 03s\n- swift-upload-image https://zuul.opendev.org/t/openstack/build/116a94a81a224bfabaaea2a99a3c18f5 : SUCCESS in 9m 20s (non-voting)\n- swift-upload-image-py3 https://zuul.opendev.org/t/openstack/build/fe3a2f2374b84605a4d569b0531d8e6a : SUCCESS in 7m 07s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/f0b476a248624f1e9cdfb154b301978d : SUCCESS in 16m 16s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/31adb28a18f444a0a8e724029ab4632e : SUCCESS in 17m 59s\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/343aa2f22d0647ac9cac246e88888ce6 : SUCCESS in 16m 01s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/d48003e88b394d0dab6bc6c9a125e9ad : SUCCESS in 17m 49s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/1b0497abdda14b8a92db91290bda21ff : SUCCESS in 18m 09s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/517267b6e36f48ed865ef7896e102386 : SUCCESS in 19m 40s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/175619d549b34a51930767a5c63231e6 : SUCCESS in 18m 01s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/b1c8f30d2ef0472eb3acce7a4242750b : SUCCESS in 17m 05s\n- swift-tox-func-py37 https://zuul.opendev.org/t/openstack/build/c501a8289aeb4725bcb4f43e1ca5d3ef : SUCCESS in 14m 38s\n- swift-tox-func-encryption-py37 https://zuul.opendev.org/t/openstack/build/834c1676a6984feea933fe07743ebf0f : SUCCESS in 15m 47s\n- swift-tox-func-ec-py37 https://zuul.opendev.org/t/openstack/build/6dbac5bc370e41359b0f3f032632aa76 : SUCCESS in 14m 43s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/082001443d9d4298a8b50f6e6dc81edb : SUCCESS in 6m 48s\n- swift-probetests-centos-7 https://zuul.opendev.org/t/openstack/build/0878f65decaa4da8bc3a030353b878e7 : SUCCESS in 35m 19s\n- swift-probetests-centos-8 https://zuul.opendev.org/t/openstack/build/03c6f47184f7415a81e84a8d72e90cc2 : SUCCESS in 40m 22s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/b504e91546024979ae2acefe7eac8655 : SUCCESS in 50m 24s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/77c586b197884815b57fd03f71bb605c : SUCCESS in 28m 23s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/16d9bbdfa61449c18a6d4117780b011e : SUCCESS in 12m 15s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a96d7f9de6a8463e9225c01696dfa924 : SUCCESS in 5m 07s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/d40490aa7f3240df98269dd1bfd4ed22 : SUCCESS in 31m 01s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/f97be00f05ae4de8b7bb595939f8f69b : SUCCESS in 39m 49s","accounts_in_message":[],"_revision_number":2},{"id":"b173497b958170f5b5b269b6f79fd74d279aa884","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-05-25 01:41:48.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":2},{"id":"b00de336ce58d9b799e13c031a67d9be4438b8bc","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-05-25 01:43:19.000000000","message":"Patch Set 2:\n\nBuild succeeded (promote pipeline).\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0216ada590b14ac3ac9c24074908db8d : SUCCESS in 1m 03s\n- swift-promote-image https://zuul.opendev.org/t/openstack/build/c88ceac890a840ce99c1f51da1925a34 : SUCCESS in 45s (non-voting)\n- swift-promote-image-py3 https://zuul.opendev.org/t/openstack/build/4b9eeabf9f984421b87e057a8e88cc3d : SUCCESS in 47s (non-voting)","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"f3f9184113b54e41b3279953240c69cd7f5df7ba","revisions":{"c69f1ef1434f00db6ada09104fa26e1d63edc914":{"kind":"REWORK","_number":1,"created":"2021-05-24 13:23:19.000000000","uploader":{"_account_id":33503,"name":"Konrad Kügler","email":"swamblumat-eclipsebugs@yahoo.de","username":"kkuegler"},"ref":"refs/changes/12/792812/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/12/792812/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/12/792812/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/12/792812/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/12/792812/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/12/792812/1"}}},"commit":{"parents":[{"commit":"15aff69606f2e08b63cfbb6c3e93f97e775e2bd8","subject":"Merge \"symlink: Ensure headers are returned as a list on py3\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/15aff69606f2e08b63cfbb6c3e93f97e775e2bd8"}]}],"author":{"name":"Konrad Kügler","email":"swamblumat-eclipsebugs@yahoo.de","date":"2021-05-24 13:20:27.000000000","tz":120},"committer":{"name":"Konrad Kügler","email":"swamblumat-eclipsebugs@yahoo.de","date":"2021-05-24 13:20:27.000000000","tz":120},"subject":"Individual content types for multi form upload","message":"Individual content types for multi form upload\n\nWhen uploading multiple files through the form upload middleware\nit would take the first file\u0027s content type and encoding and wrongly\napply it to all the uploaded files.\n\nThis was because there was a shared \u0027attributes\u0027 dict for all body parts\nwhich was (correctly) filled from all the non-file parts. The file parts\nhowever would also set their \u0027Content-Type\u0027 and \u0027Content-Encoding\u0027\nheader values in the attributes dict.\n\nThe content type/encoding handling made sure to not overwrite\nexisting values in the dict. Thus the first file to specify such a header\nvalue would win.\n\nNow the individual files get their own content types/encodings by\napplying the file part content type/encoding headers only to a copy\nof the dict.\n\nThe file parts\u0027 headers continue to be ignored if  they are overridden\nby explicit  \u0027content-type\u0027/\u0027content-encoding\u0027 body parts.\n\nCloses-Bug: #1916017\nChange-Id: I0a921afc481ef5b98cd5974c45d4b1d3e2a15731\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c69f1ef1434f00db6ada09104fa26e1d63edc914"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c69f1ef1434f00db6ada09104fa26e1d63edc914"}]},"branch":"refs/heads/master"},"f3f9184113b54e41b3279953240c69cd7f5df7ba":{"kind":"REWORK","_number":2,"created":"2021-05-24 19:55:39.000000000","uploader":{"_account_id":33503,"name":"Konrad Kügler","email":"swamblumat-eclipsebugs@yahoo.de","username":"kkuegler"},"ref":"refs/changes/12/792812/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/12/792812/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/12/792812/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/12/792812/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/12/792812/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/12/792812/2"}}},"commit":{"parents":[{"commit":"15aff69606f2e08b63cfbb6c3e93f97e775e2bd8","subject":"Merge \"symlink: Ensure headers are returned as a list on py3\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/15aff69606f2e08b63cfbb6c3e93f97e775e2bd8"}]}],"author":{"name":"Konrad Kügler","email":"swamblumat-eclipsebugs@yahoo.de","date":"2021-05-24 19:21:24.000000000","tz":120},"committer":{"name":"Konrad Kügler","email":"swamblumat-eclipsebugs@yahoo.de","date":"2021-05-24 19:21:24.000000000","tz":120},"subject":"Individual content types for multi form upload","message":"Individual content types for multi form upload\n\nWhen uploading multiple files through the form upload middleware\nit would take the first file\u0027s content type and encoding and wrongly\napply it to all the uploaded files.\n\nThis was because there was a shared \u0027attributes\u0027 dict for all body parts\nwhich was (correctly) filled from all the non-file parts. The file parts\nhowever would also set their \u0027Content-Type\u0027 and \u0027Content-Encoding\u0027\nheader values in the attributes dict.\n\nThe content type/encoding handling made sure to not overwrite\nexisting values in the dict. Thus the first file to specify such a\nheader value would win.\n\nNow the individual files get their own content types/encodings by\napplying the file part content type/encoding headers only to a copy\nof the dict.\n\nThe file parts\u0027 headers continue to be ignored if they are overridden\nby explicit \u0027content-type\u0027/\u0027content-encoding\u0027 body parts.\n\nCloses-Bug: #1916017\nChange-Id: I0a921afc481ef5b98cd5974c45d4b1d3e2a15731\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/f3f9184113b54e41b3279953240c69cd7f5df7ba"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/f3f9184113b54e41b3279953240c69cd7f5df7ba"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"status":"CLOSED","labels":[{"label":"Verified","status":"OK","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"OK","applied_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}},{"label":"Workflow","status":"OK","applied_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}}]}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}},{"name":"Workflow","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Workflow\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dCustom-Rule"],"failing_atoms":[],"atom_explanations":{}}}]}
