view gpp/core/management/commands/clean_last_visit.py @ 388:c3231af55778

For #191; r410 is wrong: it is returning the wrong posts. Rework. MySQL is not using an index on our query, and it is taking 10+ seconds. Replace this slow query with a loop that loops over the public forums, then sorts and returns the posts.
author Brian Neal <bgneal@gmail.com>
date Sat, 19 Mar 2011 05:03:51 +0000
parents c5ae0a276e33
children
line wrap: on
line source
"""
clean_last_visit is a custom manage.py command.
It is intended to be called from a cron job to clean out old user and anonymous
last visit records.

"""
import datetime

from django.core.management.base import NoArgsCommand

from core.models import UserLastVisit, AnonLastVisit

USER_LV_AGE = datetime.timedelta(weeks=4)
ANON_LV_AGE = datetime.timedelta(days=1)


class Command(NoArgsCommand):
    help = "Run periodically to clean out old last visit records."

    def handle_noargs(self, **options):

        now = datetime.datetime.now()
        user_cut_off = now - USER_LV_AGE
        anon_cut_off = now - ANON_LV_AGE

        UserLastVisit.objects.filter(last_visit__lte=user_cut_off).delete()
        AnonLastVisit.objects.filter(last_visit__lte=anon_cut_off).delete()