Catch an KyuDanRanking.DoesNotExist exception if the user has never played a game of mahjongg by now.

This commit is contained in:
2018-05-08 12:31:46 +02:00
parent 4db5c09387
commit a8536fc776

View File

@@ -31,6 +31,18 @@ KYU_DAN_ORDER = { # map sort URL args to Django ORM order_by args
}
def get_kyu_dan_ranking(user=None):
"""
get the KyuDanRanking from the Database, or return a blank one
:param user: user model
:return: KyuDanRanking object
"""
try:
return models.KyuDanRanking.objects.get(user=user)
except models.KyuDanRanking.DoesNotExist:
return models.KyuDanRanking(user=user)
class DeleteHanchan(EventDetailMixin, PermissionRequiredMixin,
generic.DeleteView):
"""Deletes a Hanchan if confimration has been answerd with 'yes'."""
@@ -206,7 +218,6 @@ class PlayerScore(LoginRequiredMixin, generic.ListView):
raise django.http.Http404(
_("No user found matching the name {}").format(
self.kwargs.get('username')))
print(request.GET)
if request.GET.get('download') == 'xlsx':
return self.get_xlsx(request, *args, **kwargs)
return super(PlayerScore, self).get(request, *args, **kwargs)
@@ -248,7 +259,7 @@ class PlayerDanScore(PlayerScore):
template_name = 'mahjong_ranking/player_dan_score.html'
def get_queryset(self):
self.kyu_dan_ranking = models.KyuDanRanking.objects.get(user=self.user)
self.kyu_dan_ranking = get_kyu_dan_ranking(user=self.user)
return models.Hanchan.objects.dan_hanchans(
user=self.user,
since=self.kyu_dan_ranking.legacy_date)
@@ -304,7 +315,7 @@ class PlayerKyuScore(PlayerScore):
template_name = 'mahjong_ranking/player_kyu_score.html'
def get_queryset(self):
self.kyu_dan_ranking = models.KyuDanRanking.objects.get(user=self.user)
self.kyu_dan_ranking = get_kyu_dan_ranking(user=self.user)
return models.Hanchan.objects.kyu_hanchans(
user=self.user,
since=self.kyu_dan_ranking.legacy_date)