Stylesheets werden nur mit Less erzeugt. Damit können sie gleich

optimiert werden.
jQuery wurde entfernt.
Übersetzungen wurden korrigiert.
Neue sync.sh Datei, welche änderungen mit rsync auf den Server spielt
und das neuladen erzwingt.
This commit is contained in:
Christian Berg
2014-12-14 23:57:40 +01:00
parent 711c303f9a
commit 9c2413a794
76 changed files with 2514 additions and 1884 deletions

121
maistar_ranking/views.py Normal file
View File

@@ -0,0 +1,121 @@
# -*- 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