from reversion.models import Version import django.dispatch new_revision_saved = django.dispatch.Signal(providing_args=["obj"]) def squashRevisionByUser(sender, obj, **kwargs): """ It should also work with moderation as obj will be a versionned object """ versions = Version.objects\ .get_for_object(obj)\ .select_related('revision')\ .order_by('-revision__date_created') last_edit = versions[0] user_made_last_edit = last_edit.revision.user if user_made_last_edit is not None: for v in versions[1:]: if v.revision.user == user_made_last_edit: v.delete() else: break new_revision_saved.connect( squashRevisionByUser, dispatch_uid="receiver_concat_revisions" )