From 63749b71ca77afeb2a9278ad4ec6a0db22198fcc Mon Sep 17 00:00:00 2001 From: "A. Svensson" Date: Mon, 23 Feb 2015 20:07:50 +0100 Subject: [PATCH] Attempt to remove servers without updates, after a week. --- .../management/commands/update_population.py | 5 ++++- .../migrations/0009_server_last_updated.py | 21 +++++++++++++++++++ src/gameservers/models.py | 11 ++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/gameservers/migrations/0009_server_last_updated.py diff --git a/src/gameservers/management/commands/update_population.py b/src/gameservers/management/commands/update_population.py index e3f4a4c..fb4b71d 100755 --- a/src/gameservers/management/commands/update_population.py +++ b/src/gameservers/management/commands/update_population.py @@ -4,6 +4,7 @@ import re import time from django.core.management.base import BaseCommand +from django.utils import timezone from gameservers.models import Server, PlayerHistory @@ -93,7 +94,7 @@ class Command(BaseCommand): #parser.url = './dump.html' # Use a local file instead when testing servers = parser.run() history = PlayerHistory() - now = time.time() + now = time.mktime(timezone.now().timetuple()) servers_handled = [] for data in servers: @@ -118,3 +119,5 @@ class Command(BaseCommand): history.add_point(server, now, data['player_count']) history.trim_points(server) + Server.remove_old_servers() + diff --git a/src/gameservers/migrations/0009_server_last_updated.py b/src/gameservers/migrations/0009_server_last_updated.py new file mode 100644 index 0000000..b6f7a8c --- /dev/null +++ b/src/gameservers/migrations/0009_server_last_updated.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('gameservers', '0008_auto_20150223_1713'), + ] + + operations = [ + migrations.AddField( + model_name='server', + name='last_updated', + field=models.DateTimeField(default=django.utils.timezone.now, auto_now=True), + preserve_default=True, + ), + ] diff --git a/src/gameservers/models.py b/src/gameservers/models.py index 209fd50..c37b558 100644 --- a/src/gameservers/models.py +++ b/src/gameservers/models.py @@ -2,6 +2,7 @@ import datetime from django.db import models +from django.utils import timezone import redis @@ -11,6 +12,7 @@ class Server(models.Model): game_url = models.URLField() site_url = models.URLField(blank=True) current_players = models.PositiveIntegerField(default=0, editable=False) + last_updated = models.DateTimeField(auto_now=True, default=timezone.now) class Meta: ordering = ['-current_players', 'title'] @@ -18,6 +20,15 @@ class Server(models.Model): def __str__(self): return self.title + @staticmethod + def remove_old_servers(): + now = timezone.now() + + for server in Server.objects.all(): + delta = now - server.last_updated + if delta.days >= 7: + del server + class PlayerHistory(object): def __init__(self, redis_settings=dict(host='localhost', port=6379, db=0)):