I know it's an old question, but in case someone was still looking for a solution,
here is one option based on the specific 'user_activated' signal provided by django-registration.
As required by the original question, the activation is revoked silently, and
the user isn't aware of this.
from django.dispatch import receiver
from registration.signals import user_activated
def remove_user_activation(user):
"""
Replace with specific app logic
"""
return True
@receiver(user_activated)
def on_user_activated(sender, **kwargs):
"""
Revoke activation to robot users
"""
user = kwargs['user']
if remove_user_activation(user):
if user.is_active:
user.is_active = False
user.save()