Further work on multi-file-upload

This commit is contained in:
Carl van Tonder
2018-04-23 01:15:33 -04:00
parent bb326bfed8
commit 935af1355b
13 changed files with 235 additions and 58 deletions

View File

@ -9,7 +9,10 @@ from crispy_forms.bootstrap import Tab, TabHolder, PrependedText, FormActions
from dal import autocomplete
from leaflet.forms.widgets import LeafletWidget
from apps.files.models import File
from .models import CaseStudy, SpatialRefSys
from .widgets import CommaSeparatedTextInput
class MinimumZoomWidget(LeafletWidget):
@ -19,13 +22,6 @@ class MinimumZoomWidget(LeafletWidget):
class BaseCaseStudyForm(forms.models.ModelForm):
"""Base form class for the CaseStudy model."""
official_project_documents = forms.FileField(
widget=forms.ClearableFileInput(attrs={
'multiple': True,
'data-url': reverse_lazy('files:upload'),
})
)
def __init__(self, *args, **kwargs):
super(BaseCaseStudyForm, self).__init__(*args, **kwargs)
self.helper = FormHelper(self)
@ -48,13 +44,6 @@ class BaseCaseStudyForm(forms.models.ModelForm):
}),
}
class Media:
js = (
'files/jquery.ui.widget.js',
'files/jquery.iframe-transport.js',
'files/jquery.fileupload.js'
)
class ShortCaseStudyForm(BaseCaseStudyForm):
"""Short version of the CaseStudy form."""
@ -95,6 +84,51 @@ class ShortCaseStudyForm(BaseCaseStudyForm):
class LongCaseStudyForm(BaseCaseStudyForm):
"""Long version of the CaseStudy form."""
official_project_documents = forms.FileField(
widget=forms.ClearableFileInput(attrs={
'multiple': True,
'data-url': reverse_lazy('files:upload'),
'data-field': 'official_project_documents_files',
'class': 'fileupload',
}), required=False
)
official_project_documents_files = forms.ModelMultipleChoiceField(
queryset=File.objects.all(),
widget=CommaSeparatedTextInput(),
required=False
)
other_documents = forms.FileField(
widget=forms.ClearableFileInput(attrs={
'multiple': True,
'data-url': reverse_lazy('files:upload'),
'data-field': 'other_documents_files',
'class': 'fileupload',
}), required=False
)
other_documents_files = forms.ModelMultipleChoiceField(
queryset=File.objects.all(),
widget=CommaSeparatedTextInput(),
required=False
)
shapefiles = forms.FileField(
widget=forms.ClearableFileInput(attrs={
'multiple': True,
'data-url': reverse_lazy('files:upload'),
'data-field': 'shapefiles_files',
'class': 'fileupload',
}), required=False
)
shapefiles_files = forms.ModelMultipleChoiceField(
queryset=File.objects.all(),
widget=CommaSeparatedTextInput(),
required=False
)
coordinate_reference_system = forms.ModelChoiceField(
queryset=SpatialRefSys.objects.all(),
widget=autocomplete.ModelSelect2(url='srs-autocomplete'),
@ -288,8 +322,11 @@ class LongCaseStudyForm(BaseCaseStudyForm):
Tab(
_("Uploads"),
'official_project_documents',
'official_project_documents_files',
'other_documents',
'other_documents_files',
'shapefiles',
'shapefiles_files',
'coordinate_reference_system',
'name_of_territory_or_area',
'shown_on_other_platforms',
@ -302,3 +339,11 @@ class LongCaseStudyForm(BaseCaseStudyForm):
class Meta(BaseCaseStudyForm.Meta):
exclude = ('approved',)
class Media:
js = (
'files/jquery.ui.widget.js',
'files/jquery.iframe-transport.js',
'files/jquery.fileupload.js',
'files/upload.js',
)