Fix the problem that patch upload fails of horizon due to python3-django upgrade

fb4c55d9ec
This commit disables FileField for uploading multiple files
directly and introduces a new method as a replacement.
the upgrade of python3-django from 2:2.2.28-1~deb11u1 to
2:2.2.28-1~deb11u2 includes this commit.
Replace FileField with MultipleFileField for uploading multiple files.
Refer to the method introduced in the commit to replace
the previous usage.

Test Plan
PASS: build-pkgs -c -p starlingx-dashboard && build-image
PASS: jenkins installation successfuly
PASS: upload a patch using Horizon Web interface successfully

Closes-Bug: 2042610

Change-Id: I7bb4a0db7621922e5f1c8811ec3f49be4a37d1a5
Signed-off-by: Wentao Zhang <wentao.zhang@windriver.com>
This commit is contained in:
Wentao Zhang 2023-11-03 11:43:00 +08:00
parent 8121f7d24d
commit 79a35bfeab
1 changed files with 14 additions and 3 deletions

View File

@ -6,7 +6,7 @@
import logging
from django.forms import FileInput
from django.forms import FileField, FileInput
from django.urls import reverse # noqa
from django.utils.translation import ugettext_lazy as _
@ -17,14 +17,25 @@ from starlingx_dashboard import api as stx_api
LOG = logging.getLogger(__name__)
class MultipleFileInput(FileInput):
allow_multiple_selected = True
class MultipleFileField(FileField):
def __init__(self, *args, **kwargs):
kwargs.setdefault("widget", MultipleFileInput())
super().__init__(*args, **kwargs)
def clean(self, data, initial=None):
single_file_clean = super().clean
if isinstance(data, (list, tuple)):
result = [single_file_clean(d, initial) for d in data]
else:
result = single_file_clean(data, initial)
return result
class UploadPatchForm(forms.SelfHandlingForm):
failure_url = 'horizon:admin:software_management:index'
patch_files = forms.FileField(label=_("Patch File(s)"),
patch_files = MultipleFileField(label=_("Patch File(s)"),
widget=MultipleFileInput(attrs={
'data-source-file': _('Patch File(s)'),
'multiple': "multiple"}),