Neues Kommando: update-ranking

Aktualisiert alle Kyu-/Dan Rankings mit einem einfachen Befehl in der Shell.

random-ranking wurde gelöscht, es wird nicht mehr verwendet.
This commit is contained in:
2017-05-10 10:13:23 +02:00
parent 10bdaaa98c
commit 5437b7b8de
3 changed files with 17 additions and 95 deletions

View File

@@ -27,7 +27,6 @@ class Command(BaseCommand):
json_data = json_data.values() json_data = json_data.values()
json_data = sorted(json_data, key=itemgetter('placement')) json_data = sorted(json_data, key=itemgetter('placement'))
for row in json_data: for row in json_data:
print row
worksheet.append([ worksheet.append([
row['placement'], row['username'], row['placement'], row['username'],
row['avg_placement'], row['avg_score'], row['avg_placement'], row['avg_score'],

View File

@@ -1,94 +0,0 @@
# -*- coding: utf-8 -*-
"""
Generate Randum Mahjong Hanchans to the the Raning System
"""
import random
from datetime import timedelta
from django.contrib import auth
from django.core.management.base import BaseCommand
from events.models import Event
from mahjong_ranking import models
class Command(BaseCommand):
help = "Deletes all expired user registrations from the database"
def add_players(self, hanchan):
user_list = set()
while len(user_list) < 4:
random_user = random.choice(self.user_list)
user_list.add(random_user)
player_list = list()
ostwind_list = list()
for user in user_list:
player_list.append(
models.Player(user=user, hanchan=hanchan, score=25000))
for player in player_list:
player.save()
end_of_game = False
ostwind_list.extend(player_list)
ostwind_list.extend(player_list)
ostwind = ostwind_list.pop()
while not end_of_game:
score = random.randrange(1300, 8000, 100)
loser = player_list[random.randrange(0, 4, 1)]
winner = player_list[random.randrange(0, 4, 1)]
winner.score += score
print 'Ostwind: %s, Gewinner: %s, Verlierer: %s, %d Punkte' % (
ostwind.user,
winner.user,
loser.user,
score,
)
if winner == loser:
# Player wins with Tsumo: Everybody pays a third of the score.
print "Tsumo!"
for player in player_list:
if player != winner:
player.score -= score / 3
else:
loser.score -= score
for player in player_list:
if player.score <= 0:
player.score = 0
end_of_game = True
if winner == ostwind:
print "Wind bleibt"
else:
print "Wind wird gewechselt."
try:
ostwind = ostwind_list.pop()
except IndexError:
end_of_game = True
print '---------------------------------------------------------------------'
for player in player_list:
print "%s: %s" % (player.user, player.score)
player.save()
print ""
def create_hanchan(self, event):
start = event.start + timedelta(minutes=random.randrange(00, 300, 15))
print event.name, start
print '=' * 80
hanchan = models.Hanchan(event=event, start=start)
hanchan.save()
self.add_players(hanchan)
hanchan.save()
def handle(self, *args, **options):
num_hanchans = int(options.get('hanchans', 4))
self.user_list = list(auth.get_user_model().objects.all())
for event in Event.objects.all():
for i in range(random.randrange(2, 8)):
self.create_hanchan(event)

View File

@@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
"""
Recalculate Mahjong Rankings...
"""
from django.core.management.base import BaseCommand
from mahjong_ranking import models
class Command(BaseCommand):
help = "Recalculate all Rankings"
def handle(self, *args, **options):
for ranking in models.KyuDanRanking.objects.all():
ranking.recalculate()