Skip to content

Fields

hypha.apply.stream_forms.fields

MultiFileFieldWidget

Bases: UploadMultipleWidget

MultiFileField

Bases: MultipleUploadedFileField

widget class-attribute instance-attribute

clean

clean(value, initial)
Source code in hypha/apply/stream_forms/fields.py
def clean(self, value, initial):
    if not value:
        return []
    old_files = [
        file
        for file in value
        if hasattr(file, "is_placeholder") and file.is_placeholder
    ]
    new_files = [
        file
        for file in value
        if hasattr(file, "is_placeholder") and not file.is_placeholder
    ]
    if not new_files and initial and len(old_files) == len(initial):
        return initial

    files = [
        FileField(
            validators=[
                FileExtensionValidator(
                    allowed_extensions=settings.FILE_ALLOWED_EXTENSIONS
                )
            ]
        ).clean(file, initial)
        for file in value
    ]

    return files

widget_attrs

widget_attrs(widget)
Source code in hypha/apply/stream_forms/fields.py
def widget_attrs(self, widget):
    attrs = super().widget_attrs(widget)
    if isinstance(widget, MultiFileFieldWidget) and "accept" not in widget.attrs:
        attrs.setdefault("accept", settings.FILE_ACCEPT_ATTR_VALUE)
    return attrs

SingleFileFieldWidget

Bases: UploadWidget

SingleFileField

Bases: UploadedFileField

widget class-attribute instance-attribute

clean

clean(value, initial)
Source code in hypha/apply/stream_forms/fields.py
def clean(self, value, initial):
    if not value:
        return
    if hasattr(value, "is_placeholder") and value.is_placeholder and initial:
        return initial
    validator = FileExtensionValidator(
        allowed_extensions=settings.FILE_ALLOWED_EXTENSIONS
    )
    file = FileField(validators=[validator]).clean(value, initial)
    return file

widget_attrs

widget_attrs(widget)
Source code in hypha/apply/stream_forms/fields.py
def widget_attrs(self, widget):
    attrs = super().widget_attrs(widget)
    if isinstance(widget, SingleFileFieldWidget) and "accept" not in widget.attrs:
        attrs.setdefault("accept", settings.FILE_ACCEPT_ATTR_VALUE)
    return attrs