Skip to content

mixins

django_spire.file.mixins

FileModelMixin

Bases: Model

files = GenericRelation(File, editable=False) class-attribute instance-attribute

Meta

abstract = True class-attribute instance-attribute

copy_files_to

Source code in django_spire/file/mixins.py
def copy_files_to(self, target: models.Model) -> list[File]:
    return copy_files_to_instance(self.files.active(), target)

FileProcessorServiceMixin

extract_single_file staticmethod

Source code in django_spire/file/mixins.py
@staticmethod
def extract_single_file(files: MultiValueDict) -> InMemoryUploadedFile | None:
    return next(iter(files.values()), None)

extract_multiple_files staticmethod

Source code in django_spire/file/mixins.py
@staticmethod
def extract_multiple_files(files: MultiValueDict) -> list[InMemoryUploadedFile]:
    result = []

    for field_name in files:
        result.extend(files.getlist(field_name))

    return result

add_file

Source code in django_spire/file/mixins.py
def add_file(
    self,
    file: InMemoryUploadedFile,
    related_field: str = '',
    validator: FileValidator | None = None,
) -> File:
    handler = SingleFileHandler.for_related_field(
        related_field,
        validator=validator,
        app_name=self._get_app_name(),
    )

    return handler.add(file, self.obj)

replace_file

Source code in django_spire/file/mixins.py
def replace_file(
    self,
    data: dict | InMemoryUploadedFile | None,
    related_field: str = '',
    validator: FileValidator | None = None,
) -> File | None:
    handler = SingleFileHandler.for_related_field(
        related_field,
        validator=validator,
        app_name=self._get_app_name(),
    )

    return handler.replace(data, self.obj)

add_files

Source code in django_spire/file/mixins.py
def add_files(
    self,
    files: list[InMemoryUploadedFile],
    related_field: str = '',
    validator: FileValidator | None = None,
) -> list[File]:
    handler = MultiFileHandler.for_related_field(
        related_field,
        validator=validator,
        app_name=self._get_app_name(),
    )

    return handler.add_many(files, self.obj)

replace_files

Source code in django_spire/file/mixins.py
def replace_files(
    self,
    data: list[dict] | list[InMemoryUploadedFile] | None,
    related_field: str = '',
    validator: FileValidator | None = None,
) -> list[File]:
    handler = MultiFileHandler.for_related_field(
        related_field,
        validator=validator,
        app_name=self._get_app_name(),
    )

    return handler.replace(data, self.obj)

delete_file

Source code in django_spire/file/mixins.py
def delete_file(self, file_id: int, related_field: str = '') -> bool:
    handler = SingleFileHandler.for_related_field(
        related_field,
        app_name=self._get_app_name(),
    )

    return handler.remove(file_id, self.obj)

delete_files

Source code in django_spire/file/mixins.py
def delete_files(self, related_field: str = '') -> int:
    handler = MultiFileHandler.for_related_field(
        related_field,
        app_name=self._get_app_name(),
    )

    return handler.remove_all(self.obj)