Skip to content

fields

django_spire.file.fields

MultipleFileField

Bases: FileField

Source code in django_spire/file/fields.py
def __init__(
    self,
    *args,
    related_field: str = '',
    validator: FileValidator | None = None,
    **kwargs
) -> None:
    self.related_field = related_field
    self.validator = validator or FileValidator()
    super().__init__(*args, **kwargs)

    self.widget = widgets.MultipleFileWidget()

related_field = related_field instance-attribute

validator = validator or FileValidator() instance-attribute

widget = widgets.MultipleFileWidget() instance-attribute

prepare_value

Source code in django_spire/file/fields.py
def prepare_value(self, value: list[File] | None) -> str:
    if value is not None:
        return json.dumps([file.to_dict() for file in value])

    return json.dumps([])

clean

Source code in django_spire/file/fields.py
def clean(
    self,
    data: list[dict] | list[InMemoryUploadedFile],
    _initial: list[dict] | None = None,
) -> list[dict] | list[InMemoryUploadedFile]:
    if not data and self.required:
        raise forms.ValidationError(self.error_messages['required'])

    if data:
        for file in data:
            if isinstance(file, UploadedFile):
                try:
                    self.validator.validate(file)
                except FileValidationError as exception:
                    raise forms.ValidationError(str(exception)) from exception

    return data

SingleFileField

Bases: FileField

Source code in django_spire/file/fields.py
def __init__(self, *args, related_field: str = '', validator: FileValidator | None = None, **kwargs) -> None:
    self.related_field = related_field
    self.validator = validator or FileValidator()
    super().__init__(*args, **kwargs)

    self.widget = widgets.SingleFileWidget()

related_field = related_field instance-attribute

validator = validator or FileValidator() instance-attribute

widget = widgets.SingleFileWidget() instance-attribute

prepare_value

Source code in django_spire/file/fields.py
def prepare_value(self, value: File | FileQuerySet | None) -> str:
    if isinstance(value, FileQuerySet):
        value = value.first()

    if value is not None:
        return value.to_json()

    return json.dumps(None)

clean

Source code in django_spire/file/fields.py
def clean(
    self,
    data: dict | InMemoryUploadedFile | None,
    _initial: dict | None = None,
) -> dict | InMemoryUploadedFile | None:
    if data is None and self.required:
        raise forms.ValidationError(self.error_messages['required'])

    if data is not None and isinstance(data, UploadedFile):
        try:
            self.validator.validate(data)
        except FileValidationError as exception:
            message = str(exception)
            raise forms.ValidationError(message) from exception

    return data