Anpassungen für das Hosting bei Djangoeurope und damit verbundenen Versionen Django 1.8 und Python 2.7
This commit is contained in:
committed by
Christian Berg
parent
cb4b15b3c6
commit
37d3cb78c1
121
src/maistar_ranking/views.py
Normal file
121
src/maistar_ranking/views.py
Normal 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
|
||||
Reference in New Issue
Block a user