Skip to content

utils

django_spire.history.utils

soft_delete_queryset

Source code in django_spire/history/utils.py
def soft_delete_queryset(queryset: QuerySet) -> list[int]:
    affected = list(queryset.filter(is_deleted=False).values_list('pk', flat=True))

    if affected:
        queryset.filter(pk__in=affected).update(is_deleted=True)

        content_type = ContentType.objects.get_for_model(queryset.model)
        HistoryEvent.objects.bulk_create(
            HistoryEvent(content_type=content_type, object_id=pk, event=HistoryEventChoices.DELETED)
            for pk in affected
        )

    return affected