Fehler bei Vergabe von Bonuspunkte korrigiert.

Kommentare für Bonuspunkte werden jetzt als Kommentar beim Spieler hinterlassen, nicht als Kommentar in der Hanchan.
FIXED: 3_in_a_row counter wurde nicht zurückgesetzt wenn Bonuspunkte vergeben wurden.
FIXED: Durchschnittliche Platzierung während eines Events wurde nur als Ganzzahl berechnet. Wird nun als Fießkomma berechnet und gesichert.
This commit is contained in:
Christian Berg
2016-01-09 22:55:26 +01:00
parent ff330d5aeb
commit 7e55faa05c
157 changed files with 2571 additions and 2835 deletions

View File

@@ -6,7 +6,7 @@ from django.core.urlresolvers import reverse
import django.forms
import django.http
from django.contrib.messages.views import SuccessMessageMixin
from django.utils.translation import gettext as _
from django.utils.translation import ugettext as _
from django.views import generic
from events.models import Event
@@ -21,14 +21,15 @@ kyu_dan_order = {
'-hanchan_count': ('-hanchan_count',),
'+rank': ('-kyu', 'dan'),
'-rank': ('-dan', 'kyu'),
'+score': ('dan_points', 'kyu_points'),
'-score': ('-dan_points', '-kyu_points'),
'+score': ('dan_points', '-dan', 'kyu_points'),
'-score': ('-dan_points', 'dan', '-kyu_points'),
'+username': ('user__username',),
'-username': ('-user__username',)
}
class DeleteHanchan(EventDetailMixin, PermissionRequiredMixin, generic.DeleteView):
class DeleteHanchan(EventDetailMixin, PermissionRequiredMixin,
generic.DeleteView):
"""
Fragt zuerst nach, ob die Hanchan wirklich gelöscht werden soll.
Wir die Frage mit "Ja" beantwortet, wird die die Hanchan gelöscht.
@@ -43,7 +44,8 @@ class DeleteHanchan(EventDetailMixin, PermissionRequiredMixin, generic.DeleteVie
kwargs={'event': self.object.event.pk})
class HanchanForm(SuccessMessageMixin, EventDetailMixin, PermissionRequiredMixin, generic.UpdateView):
class HanchanForm(SuccessMessageMixin, EventDetailMixin,
PermissionRequiredMixin, generic.UpdateView):
"""
Ein Formular um neue Hanchans anzulegen, bzw. eine bestehende zu
bearbeitsen
@@ -68,7 +70,8 @@ class HanchanForm(SuccessMessageMixin, EventDetailMixin, PermissionRequiredMixin
return forms.HanchanForm
def get_object(self, queryset=None):
if self.kwargs.get('hanchan') and self.request.user.has_perm('mahjong_ranking.change_hanchan'):
if self.kwargs.get('hanchan') and self.request.user.has_perm(
'mahjong_ranking.change_hanchan'):
hanchan = models.Hanchan.objects.get(id=self.kwargs['hanchan'])
self.event = hanchan.event
elif self.kwargs.get('event'):
@@ -93,7 +96,9 @@ class HanchanForm(SuccessMessageMixin, EventDetailMixin, PermissionRequiredMixin
if self.kwargs.get('hanchan'):
return _('%s has been updated successfully.') % self.object
else:
return _('%s has been added successfully. You can now add a new one.') % self.object
return _(
'%s has been added successfully. You can now add a new '
'one.') % self.object
class EventHanchanList(EventDetailMixin, generic.ListView):
@@ -129,7 +134,26 @@ class EventRankingList(EventDetailMixin, generic.ListView):
raise django.http.Http404(_('Event does not exist'))
class KyuDanRankingList(generic.ListView):
class MahjongMixin(object):
def get_context_data(self, **kwargs):
context = super(MahjongMixin, self).get_context_data(**kwargs)
try:
context['season'] = self.season
context['season_start'] = date(year=self.season, month=1, day=1)
context['season_end'] = date(year=self.season, month=12, day=31)
context['season_list'] = models.SeasonRanking.objects.season_list
except AttributeError:
pass
context[
'latest_hanchan_list'] = \
models.Hanchan.objects.confirmed_hanchans()[
:3]
context['latest_event_list'] = Event.objects.latest_events(num=3)
return context
class KyuDanRankingList(MahjongMixin, generic.ListView):
"""
Anzeige aller Spiele mit ihrem Kyu bzw Dan Grad.
"""
@@ -145,30 +169,22 @@ class KyuDanRankingList(generic.ListView):
def get_queryset(self):
queryset = models.KyuDanRanking.objects.all().order_by(*self.order_by)
return queryset.select_related('user__membership')
return queryset.select_related()
class SeasonRankingList(generic.ListView):
class SeasonRankingList(MahjongMixin, generic.ListView):
model = models.SeasonRanking
paginate_by = 25
season = None
def get_queryset(self):
self.season = int(self.kwargs.get('season', date.today().year))
queryset = self.model.objects.filter(season=self.season,
placement__isnull=False)
queryset = self.model.objects.filter(
season=self.season,
placement__isnull=False
)
return queryset.select_related()
def get_context_data(self, **kwargs):
context = super(SeasonRankingList, self).get_context_data(**kwargs)
context['season'] = self.season
context['season_start'] = date(year=self.season, month=1, day=1)
context['season_end'] = date(year=self.season, month=12, day=31)
context['season_list'] = models.SeasonRanking.objects.season_list
context['latest_hanchan_list'] = models.Hanchan.objects.confirmed_hanchans()[:3]
context['latest_event_list'] = Event.objects.archive()[:3]
return context
class PlayerScore(LoginRequiredMixin, generic.ListView):
paginate_by = 25
@@ -176,9 +192,12 @@ class PlayerScore(LoginRequiredMixin, generic.ListView):
def get(self, request, *args, **kwargs):
user_model = auth.get_user_model()
try:
self.user = user_model.objects.get(username=self.kwargs.get('username'))
self.user = user_model.objects.get(
username=self.kwargs.get('username'))
except user_model.DoesNotExist:
raise django.http.Http404(_("No user found matching the name {}").format(self.kwargs.get('username')))
raise django.http.Http404(
_("No user found matching the name {}").format(
self.kwargs.get('username')))
return super(PlayerScore, self).get(request, *args, **kwargs)
def get_context_data(self, **kwargs):
@@ -235,6 +254,7 @@ class PlayerLadderScore(PlayerScore):
self.season = int(self.request.GET.get('season'))
except:
self.season = date.today().year
hanchan_list = models.Hanchan.objects.season_hanchans(user=self.user, season=self.season)
hanchan_list = models.Hanchan.objects.season_hanchans(
user=self.user, season=self.season)
print hanchan_list
return hanchan_list