1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import datetime
- from django import forms
- from django.core.exceptions import ValidationError
- class DocumentUploadForm(forms.Form):
- MAX_FILES = 5 # Максимальное количество файлов для загрузки
- doc_expire_date = forms.DateField(
- required=False,
- widget=forms.DateInput(attrs={
- 'class': 'form-control',
- 'type': 'date',
- }),
- label='Дата окончания действия документа (при наличии)'
- )
- doc_file = forms.FileField(
- widget=forms.ClearableFileInput(attrs={
- 'multiple': True,
- 'id': 'doc-file-input'
- }),
- required=True,
- )
- # Дата истечения срока документа не может быть в прошлом
- def clean_doc_expire_date(self):
- doc_expire_date = self.cleaned_data.get('doc_expire_date')
- if doc_expire_date and doc_expire_date < datetime.date.today():
- raise ValidationError("Дата окончания действия документа не может быть в прошлом.")
- return doc_expire_date
- # Загружаемые файлы должны иметь только допустимый тип и расширение
- def clean_doc_file(self):
- files = self.files.getlist('doc_file')
- allowed_mime_types = ['image/jpeg', 'image/png', 'application/pdf']
- allowed_extensions = ['jpg', 'jpeg', 'png', 'pdf']
- # Проверка на максимальное количество файлов
- if len(files) > self.MAX_FILES:
- raise ValidationError(f"Вы можете загрузить не более {self.MAX_FILES} файлов.")
-
- for file in files:
- # Проверяем расширение файла
- extension = file.name.split('.')[-1].lower()
- if extension not in allowed_extensions:
- raise ValidationError(f"Файл {file.name} имеет недопустимое расширение. Допустимые расширения: {', '.join(allowed_extensions)}.")
- # Проверяем MIME тип файла
- if file.content_type not in allowed_mime_types:
- raise ValidationError(f"Файл {file.name} имеет недопустимый формат. Допустимые форматы: {', '.join(allowed_mime_types)}.")
-
- return files
|