Diverse Umbauarbeiten für das neue Ranking.

This commit is contained in:
2017-12-22 10:51:20 +01:00
parent c030a31e2b
commit b7fab97715
6 changed files with 243 additions and 62 deletions

View File

@@ -17,16 +17,22 @@ class Command(BaseCommand):
parser.add_argument('reset_date', type=parse_date)
def handle(self, *args, **options):
reset_date = timezone.make_aware(datetime.combine(options.get('reset_date'), time(23, 59, 59)))
# models.KyuDanRanking.objects.update(until=reset_date, force_recalc=True)
dan_rankigns = models.KyuDanRanking.objects.filter(dan__isnull=False)
for ranking in dan_rankigns:
legacy_attrs = [ key for key in models.KyuDanRanking.__dict__.keys()
if key.startswith('legacy') ]
legacy_attrs.remove('legacy_date')
reset_date = timezone.make_aware(datetime.combine(
options.get('reset_date'), time(23, 59, 59)))
models.KyuDanRanking.objects.update(until=reset_date, force_recalc=True)
for ranking in models.KyuDanRanking.objects.filter(dan__gt=0):
print(ranking)
ranking.dan = 1
ranking.dan_points = 0
ranking.kyu = None
ranking.kyu_points = 0
ranking.wins_in_a_row = 0
ranking.legacy_date = reset_date.date()
ranking.legacy_hanchan_count = ranking.hanchan_count
ranking.legacy_dan_points = ranking.dan_points
ranking.legacy_kyu_points = ranking.kyu_points
for legacy_attr in legacy_attrs:
attr = legacy_attr.split("_", maxsplit=1)[1]
print(ranking, legacy_attr, attr, getattr(ranking, attr))
setattr(ranking, legacy_attr, getattr(ranking, attr))
ranking.save()

View File

@@ -23,11 +23,11 @@ class Command(BaseCommand):
def handle(self, *args, **options):
since = options.get('since', None)
until = options.get('until', None)
force_recalc = options.get('forecerecalc', False)
force_recalc = options.get('forcerecalc')
if isinstance(since, date):
since = datetime.combine(since, time(0, 0, 0))
since = timezone.make_aware(since)
if isinstance(until, date):
until = datetime.combine(until, time(23, 59, 59))
until = timezone.make_aware(until)
models.KyuDanRanking.objects.update(since=since, until=until, force_recalc=force_recalc)
models.KyuDanRanking.objects.update(since=since, until=until, force_recalc=force_recalc)