* Throw 404 instead of a 503 in Event Mixins if the related event does
not exist. * Changes in the KyuDanRanking View to be more stable if we get bogus kwargs.
This commit is contained in:
@@ -16,6 +16,7 @@ from kasu import xlsx
|
||||
from . import forms, models
|
||||
from .mixins import MahjongMixin
|
||||
|
||||
DEFAULT_KYU_DAN_ORDER = '-score'
|
||||
KYU_DAN_ORDER = { # map sort URL args to Django ORM order_by args
|
||||
'+full_name': ('user__last_name', 'user__first_name'),
|
||||
'-full_name': ('-user__last_name', '-user__first_name'),
|
||||
@@ -107,6 +108,47 @@ class HanchanForm(SuccessMessageMixin, EventDetailMixin,
|
||||
'one.') % self.object
|
||||
|
||||
|
||||
class EventHanchanForm(EventDetailMixin, PermissionRequiredMixin,
|
||||
generic.TemplateView):
|
||||
"""Display a Formset to add and Edit Hanchans of the specific Event."""
|
||||
permission_required = 'mahjong_ranking.edit_hanchan'
|
||||
template_name = 'mahjong_ranking/eventhanchan_form.html'
|
||||
model=models.Hanchan
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
self.event = models.Event.objects.get(pk=self.kwargs['event'])
|
||||
context = super(EventHanchanForm, self).get_context_data()
|
||||
context['formset'] = self.formset
|
||||
return context
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.get_queryset()
|
||||
self.formset = forms.HanchanFormset(
|
||||
instance=self.event,
|
||||
initial=[{'start': self.event.start}]
|
||||
)
|
||||
context = self.get_context_data(**kwargs)
|
||||
return self.render_to_response(context)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
print("ICH WURDE GEPOSTET!!!!")
|
||||
self.get_queryset()
|
||||
self.formset = forms.HanchanFormset(
|
||||
self.request.POST,
|
||||
self.request.FILES,
|
||||
instance=self.event,
|
||||
initial=[{'start': self.event.start}]
|
||||
)
|
||||
if self.formset.is_valid():
|
||||
self.formset.save()
|
||||
return django.http.HttpResponseRedirect(
|
||||
reverse('event-hanchan-form', kwargs={'event': self.event.pk})
|
||||
)
|
||||
context = self.get_context_data(**kwargs)
|
||||
return self.render_to_response(context)
|
||||
|
||||
|
||||
|
||||
class EventHanchanList(EventDetailMixin, generic.ListView):
|
||||
"List all hanchans played on a given event."
|
||||
model = models.Hanchan
|
||||
@@ -120,15 +162,15 @@ class EventRankingList(EventDetailMixin, generic.ListView):
|
||||
|
||||
class KyuDanRankingList(MahjongMixin, generic.ListView):
|
||||
"""List all Players with an Kyu or Dan score. """
|
||||
default_order = '-score'
|
||||
order_by = ''
|
||||
order_by = None
|
||||
paginate_by = 25
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
"""Set the order_by settings, revert to default_order if necessary."""
|
||||
self.order_by = KYU_DAN_ORDER[
|
||||
kwargs.get('order_by', self.default_order)
|
||||
]
|
||||
if kwargs.get('order_by') in KYU_DAN_ORDER.keys():
|
||||
self.order_by = KYU_DAN_ORDER[kwargs.get('order_by')]
|
||||
else:
|
||||
self.order_by = KYU_DAN_ORDER[DEFAULT_KYU_DAN_ORDER]
|
||||
return super(KyuDanRankingList, self).dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_queryset(self):
|
||||
|
||||
Reference in New Issue
Block a user