oscarmlage oscarmlage

Django: limpiando usuarios desde shell

Written by oscarmlage on

Es tal el interés por el foro de VamosaVidas (si, ese que rompí en su día y he vuelto a arreglar) que todos los días tenemos cientos de registros. Realmente se trata de robots que se dedican a hacer spam, pero eso es lo de menos :P.

Mientras no actualizo y arreglo django-authall es un poco coñazo andar mirando en el admin el último usuario bueno y borrar manualmente uno a uno cotejando que no me equivoque, así que he pensado en un par de lineas que no deberían hacer demasiado daño si se usan con precaución. Desde la shell de nuestro proyecto podemos hacer algo así:

$ python manage.py shell
>>> from django.contrib.auth.models import User
>>> list(User.objects.order_by('date_joined'))
>>> [user.delete() for user in list(User.objects.order_by('date_joined'))[100:]]

Primero estamos listando todos los usuarios por orden de fecha de registro, los convertimos en lista para que no salgan los datos "truncados". Y en segundo lugar estamos eliminando todos excepto los 100 primeros.

Esta es la sencillez y potencia de Python.