optimiert werden. jQuery wurde entfernt. Übersetzungen wurden korrigiert. Neue sync.sh Datei, welche änderungen mit rsync auf den Server spielt und das neuladen erzwingt.
122 lines
4.2 KiB
Python
122 lines
4.2 KiB
Python
# -*- encoding: utf-8 -*-
|
|
|
|
from datetime import date
|
|
|
|
from django.contrib import auth
|
|
from django.core.urlresolvers import reverse
|
|
from django.shortcuts import get_object_or_404
|
|
from django.utils.translation import gettext as _
|
|
from django.views import generic
|
|
|
|
from events.models import Event
|
|
from events.views import EventDetailMixin
|
|
from membership.models import Membership
|
|
from utils.mixins import LoginRequiredMixin, PermissionRequiredMixin
|
|
from mahjong_ranking.views import PlayerScore
|
|
from . import forms, models
|
|
|
|
|
|
class GameForm(EventDetailMixin, PermissionRequiredMixin, generic.UpdateView):
|
|
model = models.Game
|
|
permission_required = 'maistar_ranking.add_game'
|
|
form_class = forms.GameForm
|
|
|
|
def get_object(self, queryset=None):
|
|
if 'game' in self.kwargs:
|
|
game = get_object_or_404(models.Game, pk=self.kwargs['game'])
|
|
elif 'event' in self.kwargs:
|
|
self.event = get_object_or_404(Event, pk=self.kwargs['event'])
|
|
game = models.Game(event=self.event)
|
|
return game
|
|
|
|
|
|
class DeleteGame(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.
|
|
"""
|
|
model = models.Game
|
|
permission_required = 'maistar_ranking.delete_game'
|
|
pk_url_kwarg = 'hanchan'
|
|
|
|
def get_success_url(self):
|
|
return reverse(
|
|
'maistar_ranking-game-list',
|
|
kwargs={'event': self.object.event.pk}
|
|
)
|
|
|
|
|
|
class UpdateGame(EventDetailMixin, PermissionRequiredMixin, generic.UpdateView):
|
|
"""
|
|
Ein Formular um eine neues Spiel anzulegen, bzw. eine bestehendes zu
|
|
bearbeiten.
|
|
"""
|
|
model = models.Game
|
|
permission_required = 'maistar_ranking.update_game'
|
|
|
|
def get_object(self, queryset=None): # @UnusedVariable
|
|
game = models.Game.objects.get(id=self.kwargs['game'])
|
|
self.event = game.event
|
|
return game
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = generic.UpdateView.get_context_data(self, **kwargs)
|
|
context['event'] = self.event
|
|
return context
|
|
|
|
|
|
class ListGames(EventDetailMixin, generic.ListView):
|
|
"""
|
|
Auflistung aller Spiele welche während einer Veranstaltung gespielt wurden.
|
|
"""
|
|
model = models.Game
|
|
|
|
def get_queryset(self):
|
|
self.event = get_object_or_404(models.Event, pk=self.kwargs['event'])
|
|
return models.Game.objects.filter(event=self.event).select_related()
|
|
|
|
|
|
class ListPlayerGames(PlayerScore):
|
|
template_name = 'maistar_ranking/player_game_list.html'
|
|
paginate_by = 25
|
|
context_object_name = 'game_list'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(ListPlayerGames, self).get_context_data()
|
|
context['membership'] = Membership.objects.get(user=self.user)
|
|
context['season_list'] = models.Ranking.objects.filter(user=self.user).values_list('season', flat=True)
|
|
context['season'] = self.season
|
|
return context
|
|
|
|
def get_queryset(self, **kwargs):
|
|
self.user = get_object_or_404(auth.get_user_model(),
|
|
username=self.kwargs.get('username'))
|
|
self.season = self.kwargs.get('season', date.today().year)
|
|
return models.Game.objects.player_games(player=self.user,
|
|
season=self.season)
|
|
|
|
|
|
class ListRankings(generic.ListView):
|
|
model = models.Ranking
|
|
paginate_by = 50
|
|
season = None
|
|
is_archive = False
|
|
|
|
def get_queryset(self):
|
|
self.season = int(self.kwargs.get('season', date.today().year))
|
|
queryset = models.Ranking.objects.filter(
|
|
season=self.season,
|
|
placement__isnull=False
|
|
)
|
|
queryset = queryset.select_related()
|
|
return queryset
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = generic.ListView.get_context_data(self, **kwargs)
|
|
context['is_archive'] = self.is_archive
|
|
context['season'] = self.season
|
|
context['season_list'] = models.Ranking.objects.get_seasons()
|
|
context['latest_games'] = models.Game.objects.filter(confirmed=True)[:3]
|
|
context['latest_events'] = Event.objects.archive()[:3]
|
|
return context
|