From 636c76fd7837f53287f7dec42800a1875be6cd30 Mon Sep 17 00:00:00 2001 From: Xeniac Date: Wed, 10 May 2017 10:13:23 +0200 Subject: [PATCH] Neues Kommando: update-ranking Aktualisiert alle Kyu-/Dan Rankings mit einem einfachen Befehl in der Shell. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit random-ranking wurde gelöscht, es wird nicht mehr verwendet. --- .../management/commands/export-ranking.py | 1 - .../management/commands/random-ranking.py | 94 ------------------- .../management/commands/update-ranking.py | 17 ++++ 3 files changed, 17 insertions(+), 95 deletions(-) delete mode 100644 src/mahjong_ranking/management/commands/random-ranking.py create mode 100644 src/mahjong_ranking/management/commands/update-ranking.py diff --git a/src/mahjong_ranking/management/commands/export-ranking.py b/src/mahjong_ranking/management/commands/export-ranking.py index 01528e2..fc7b198 100644 --- a/src/mahjong_ranking/management/commands/export-ranking.py +++ b/src/mahjong_ranking/management/commands/export-ranking.py @@ -27,7 +27,6 @@ class Command(BaseCommand): json_data = json_data.values() json_data = sorted(json_data, key=itemgetter('placement')) for row in json_data: - print row worksheet.append([ row['placement'], row['username'], row['avg_placement'], row['avg_score'], diff --git a/src/mahjong_ranking/management/commands/random-ranking.py b/src/mahjong_ranking/management/commands/random-ranking.py deleted file mode 100644 index 294fc07..0000000 --- a/src/mahjong_ranking/management/commands/random-ranking.py +++ /dev/null @@ -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) diff --git a/src/mahjong_ranking/management/commands/update-ranking.py b/src/mahjong_ranking/management/commands/update-ranking.py new file mode 100644 index 0000000..6b89c44 --- /dev/null +++ b/src/mahjong_ranking/management/commands/update-ranking.py @@ -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() +