Anpassungen für das Hosting bei Djangoeurope und damit verbundenen Versionen Django 1.8 und Python 2.7

This commit is contained in:
Christian Berg
2015-08-05 18:55:48 +02:00
committed by Christian Berg
parent cb4b15b3c6
commit 37d3cb78c1
1355 changed files with 7289 additions and 6858 deletions

View File

@@ -0,0 +1,60 @@
# -*- encoding: utf-8 -*-
"""
Created on 22.11.2014
@author: christian
"""
from django.db import models
from . import settings
class GameManager(models.Manager):
use_for_related_fields = True
def player_games(self, player, season=None, **kwargs):
queryset = self.filter(
models.Q(player1=player) | models.Q(player2=player) |
models.Q(player3=player) | models.Q(player4=player) |
models.Q(player5=player) | models.Q(player6=player)
)
if season:
queryset = queryset.filter(season=season)
if kwargs:
queryset = queryset.filter(**kwargs)
return queryset
class LadderManager(models.Manager):
use_for_related_fields = True
def calculate_rankings(self, season):
"""
Berechnet die Jahresrankings für die Spieler neu.
@param season: Das Jahr das neu berechnet werden soll
@type season: Integer
"""
rankings = self.filter(season=season)
rankings.update(placement=None)
rankings = rankings.filter(
games_count__gte=settings.MAISTAR_GAMES_FOR_LADDERRANKING) # @IgnorePep8
rankings = rankings.order_by('avg_placement', '-avg_score')
placement = 1
previous_avg_placement = None
previous_avg_score = None
previous_placement = None
for ranking in rankings:
if ranking.avg_placement == previous_avg_placement \
and ranking.avg_score == previous_avg_score:
ranking.placement = previous_placement
else:
ranking.placement = placement
ranking.save(force_update=True)
previous_avg_placement = ranking.avg_placement
previous_avg_score = ranking.avg_score
previous_placement = ranking.placement
placement += 1
def get_seasons(self):
return self.values_list('season', flat=True).order_by(
'season').distinct()