@@ -891,7 +891,7 @@ class EditRiskAcceptanceForm(forms.ModelForm):
891891 recommendation = forms .ChoiceField (choices = Risk_Acceptance .TREATMENT_CHOICES , initial = Risk_Acceptance .TREATMENT_ACCEPT , widget = forms .RadioSelect , label = "Security Recommendation" )
892892 decision = forms .ChoiceField (choices = Risk_Acceptance .TREATMENT_CHOICES , initial = Risk_Acceptance .TREATMENT_ACCEPT , widget = forms .RadioSelect )
893893
894- path = forms .FileField (label = "Proof" , required = False , widget = forms .widgets .FileInput (attrs = {"accept" : ".jpg,.png,.pdf" }))
894+ path = forms .FileField (label = "Proof" , required = False , widget = forms .widgets .FileInput (attrs = {"accept" : ", " . join ( settings . FILE_IMPORT_TYPES ) }))
895895 expiration_date = forms .DateTimeField (required = False , widget = forms .TextInput (attrs = {"class" : "datepicker" }))
896896
897897 class Meta :
@@ -904,10 +904,20 @@ def __init__(self, *args, **kwargs):
904904 self .fields ["expiration_date_warned" ].disabled = True
905905 self .fields ["expiration_date_handled" ].disabled = True
906906
907+ def clean_path (self ):
908+ if (data := self .cleaned_data .get ("path" )) is not None :
909+ ext = Path (data .name ).suffix # [0] returns path+filename
910+ valid_extensions = settings .FILE_UPLOAD_TYPES
911+ if ext .lower () not in valid_extensions :
912+ if accepted_extensions := f"{ ', ' .join (valid_extensions )} " :
913+ msg = f"Unsupported extension. Supported extensions are as follows: { accepted_extensions } "
914+ else :
915+ msg = "File uploads are prohibited due to the list of acceptable file extensions being empty"
916+ raise ValidationError (msg )
917+ return data
918+
907919
908920class RiskAcceptanceForm (EditRiskAcceptanceForm ):
909- # path = forms.FileField(label="Proof", required=False, widget=forms.widgets.FileInput(attrs={"accept": ".jpg,.png,.pdf"}))
910- # expiration_date = forms.DateTimeField(required=False, widget=forms.TextInput(attrs={'class': 'datepicker'}))
911921 accepted_findings = forms .ModelMultipleChoiceField (
912922 queryset = Finding .objects .none (), required = True ,
913923 widget = forms .widgets .SelectMultiple (attrs = {"size" : 10 }),
0 commit comments