view gpp/core/management/commands/max_users.py @ 334:6805d15cda13

Adding a script I had to write on the fly to filter out posts from the posts csv file that had no parent topics. MyISAM let me get away with that, but InnoDB won't.
author Brian Neal <bgneal@gmail.com>
date Sat, 26 Feb 2011 01:28:22 +0000
parents dcc929973bba
children 3fe60148f75c
line wrap: on
line source
"""
max_users is a custom manage.py command.
It is intended to be called from a cron job to calculate the maximum
number of users online statistic.
"""
import datetime

from django.core.management.base import NoArgsCommand

from core.models import UserLastVisit, AnonLastVisit, Statistic


class Command(NoArgsCommand):
    help = "Run periodically to compute the max users online statistic."

    def handle_noargs(self, **options):

        now = datetime.datetime.now()
        cut_off = now - datetime.timedelta(minutes=15)

        users = UserLastVisit.objects.filter(last_visit__gte=cut_off).count()
        guests = AnonLastVisit.objects.filter(last_visit__gte=cut_off).count()

        updated = False
        try:
            stat = Statistic.objects.get(pk=1)
        except Statistic.DoesNotExist:
            stat = Statistic(max_users=users,
                    max_users_date=now,
                    max_anon_users=guests,
                    max_anon_users_date=now)
            updated=True
        else:
            if users > stat.max_users:
                stat.max_users = users
                stat.max_users_date = now
                updated=True
            if guests > stat.max_anon_users:
                stat.max_anon_users = guests
                stat.max_anon_users_date = now
                updated=True

        if updated:
            stat.save()