def refresh_data(self): query = MinecraftQuery(self.address, self.port) try: self.server_info = query.get_rules() self.response = "ONLINE" except socket.timeout: self.response = "OFFLINE" print("SERVER: " + self.response)
def clean(self): cleaned_data = super(ServerCreateForm, self).clean() query = MinecraftQuery(cleaned_data['ip'], cleaned_data['port']) try: self.full_status = query.get_rules() except: raise ValidationError(u'Cannot query server. Is server.properties enable-query true?') if self.full_status['motd'] != cleaned_data['rand_motd']: raise ValidationError(u'Check that your server was reloaded with the random MOTD') return cleaned_data
from mcserverslive.models import Server from mcstatus.minecraft_query import MinecraftQuery from datetime import timedelta from django.db.models import Avg from django.utils import timezone from django.conf import settings minutes_to_archive = timedelta(minutes=settings.ARCHIVE_EVERY_MINUTES) servers = Server.objects.all() for server in servers: query = MinecraftQuery(server.ip, server.port) right_now = timezone.now() time_since_last_archive = right_now - server.archivenumplayers_set.latest("query_time").query_time if time_since_last_archive > minutes_to_archive: numplayers_set = server.numplayers_set.all() num_players = numplayers_set.aggregate(Avg("num_players"))["num_players__avg"] server.archivenumplayers_set.create(query_time=right_now, num_players=num_players) i = 0 n = len(numplayers_set) - 1 while i < n: numplayers_set[i].delete() i += 1 try: