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:
@@ -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'],
|
||||||
|
|||||||
@@ -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)
|
|
||||||
17
src/mahjong_ranking/management/commands/update-ranking.py
Normal file
17
src/mahjong_ranking/management/commands/update-ranking.py
Normal 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()
|
||||||
|
|
||||||
Reference in New Issue
Block a user