Skip to content

tools

django_spire.file.tools

copy_files_from_source_to_target_model_object

Source code in django_spire/file/tools.py
def copy_files_from_source_to_target_model_object(source: Any[models.Model], target: Any[models.Model]) -> List[File]:
    target_class = target.__class__
    target_content_type = ContentType.objects.get_for_model(target_class)

    file_list = source.files.active()

    if not file_list.exists():
        return []

    files_to_create = []
    for file in file_list:
        new_file = File(
            content_type=target_content_type,
            object_id=target.pk,
            file=file.file,
            name=file.name,
            size=file.size,
            type=file.type,
            related_field=file.related_field,
            is_active=file.is_active,
            is_deleted=file.is_deleted
        )
        files_to_create.append(new_file)

    File.objects.bulk_create(files_to_create)

    return files_to_create