Vereinfachung Membership ist nun ein custom login model, keine Abhängikeiten mehr zu auth.User.

absofort können alle Benutzer ins Ranking eingetragen werden und nicht mehr nur "zahlende Mitglieder".
This commit is contained in:
Christian Berg
2015-08-10 20:49:07 +02:00
committed by Christian Berg
parent 37d3cb78c1
commit 617b7131fe
100 changed files with 3857 additions and 420 deletions

View File

@@ -15,6 +15,9 @@ from utils.html5 import forms
from . import models
USER_MODEL = get_user_model()
class HanchanForm(forms.ModelForm):
error_css_class = 'error'
required_css_class = 'required'
@@ -29,10 +32,8 @@ class HanchanForm(forms.ModelForm):
}
def clean_start(self):
u"""
Das Datum darf nicht in der Zukunft liegen und es muss innerhalb der
Dauer des Events liegen.
"""
u"""Das Datum darf nicht in der Zukunft liegen und es muss innerhalb
der Dauer des Events liegen."""
start = self.cleaned_data['start']
event = self.cleaned_data['event']
if start > timezone.now():
@@ -57,9 +58,6 @@ class HanchanAdminForm(HanchanForm):
class PlayerForm(forms.ModelForm):
error_css_class = 'error'
required_css_class = 'required'
player_choices = get_user_model().objects.filter(groups__in=(1, 2))
player_choices = player_choices.order_by('username').distinct()
user = forms.ModelChoiceField(player_choices, required=True)
comment = forms.CharField(
widget=forms.widgets.TextInput(attrs={'maxlength': 255}),
required=False
@@ -73,7 +71,6 @@ class PlayerForm(forms.ModelForm):
self.fields['score'].widget.attrs['size'] = 6
self.fields['score'].widget.attrs['type'] = 'number'
class Meta(object):
model = models.Player
fields = ('hanchan', 'user', 'score', 'bonus_points', 'comment')
@@ -93,7 +90,7 @@ class PlayerInlineFormSet(BaseInlineFormSet):
class SeasonSelectForm(django.forms.Form):
season = django.forms.ChoiceField(label='', choices=('a', 'b', 'c'))
def __init__(self, user, data=None, *args, **kwargs):
def __init__(self, user, *args, **kwargs):
super(SeasonSelectForm, self).__init__(args, kwargs)
season_list = models.LadderRanking.objects.filter(user=user)
season_list = season_list.select_related('user')

View File

@@ -0,0 +1,143 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
from django.conf import settings
class Migration(migrations.Migration):
dependencies = [
('events', '__first__'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='EventRanking',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('placement', models.PositiveIntegerField(null=True, blank=True)),
('avg_placement', models.FloatField(default=4)),
('avg_score', models.FloatField(default=0)),
('hanchan_count', models.PositiveIntegerField(default=0)),
('good_hanchans', models.PositiveIntegerField(default=0)),
('won_hanchans', models.PositiveIntegerField(default=0)),
('dirty', models.BooleanField(default=True, editable=False)),
('event', models.ForeignKey(to='events.Event')),
('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
],
options={
'ordering': ('placement', 'avg_placement', '-avg_score'),
},
),
migrations.CreateModel(
name='Hanchan',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('comment', models.TextField(verbose_name='Anmerkung', blank=True)),
('confirmed', models.BooleanField(default=True, help_text='Nur g\xfcltige und best\xe4tigte Hanchans kommen in die Wertung.', verbose_name='Wurde best\xe4tigt')),
('player_names', models.CharField(max_length=127, editable=False)),
('start', models.DateTimeField(help_text='Wichtig damit die richtigen Hanchans in die Wertung kommen.', verbose_name='Beginn')),
('valid', models.BooleanField(default=False, verbose_name='Ist g\xfcltig')),
('event', models.ForeignKey(to='events.Event')),
],
options={
'ordering': ('-start',),
'verbose_name': 'Hanchan',
'verbose_name_plural': 'Hanchans',
},
),
migrations.CreateModel(
name='KyuDanRanking',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('dan', models.PositiveSmallIntegerField(null=True, blank=True)),
('dan_points', models.PositiveIntegerField(default=0)),
('kyu', models.PositiveSmallIntegerField(default=10, null=True, blank=True)),
('kyu_points', models.PositiveIntegerField(default=0)),
('won_hanchans', models.PositiveIntegerField(default=0)),
('good_hanchans', models.PositiveIntegerField(default=0)),
('hanchan_count', models.PositiveIntegerField(default=0)),
('dirty', models.BooleanField(default=True, editable=False)),
('user', models.OneToOneField(to=settings.AUTH_USER_MODEL)),
],
options={
'ordering': ('-dan_points', '-kyu_points'),
'verbose_name': 'Ky\u016b/Dan Wertung',
'verbose_name_plural': 'Ky\u016b/Dan Wertungen',
},
),
migrations.CreateModel(
name='LadderRanking',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('placement', models.PositiveIntegerField(null=True, blank=True)),
('avg_placement', models.FloatField(null=True, blank=True)),
('avg_score', models.FloatField(null=True, blank=True)),
('hanchan_count', models.PositiveIntegerField(default=0)),
('good_hanchans', models.PositiveIntegerField(default=0)),
('won_hanchans', models.PositiveIntegerField(default=0)),
('dirty', models.BooleanField(default=True, editable=False)),
],
options={
'ordering': ('placement', 'avg_placement', '-avg_score'),
},
),
migrations.CreateModel(
name='LadderSeason',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(max_length=100)),
('start', models.DateField()),
('end', models.DateField()),
('dirty', models.BooleanField(default=True, editable=False)),
],
options={
'ordering': ('start',),
'verbose_name': 'Saison',
'verbose_name_plural': 'Saisons',
},
),
migrations.CreateModel(
name='Player',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('score', models.PositiveIntegerField(default=0)),
('placement', models.PositiveSmallIntegerField(default=None, null=True, blank=True)),
('kyu_points', models.PositiveSmallIntegerField(default=None, null=True, blank=True)),
('dan_points', models.PositiveSmallIntegerField(default=None, null=True, blank=True)),
('bonus_points', models.PositiveSmallIntegerField(default=0, null=True, blank=True)),
('comment', models.TextField(verbose_name='Anmerkung', blank=True)),
('hanchan', models.ForeignKey(to='mahjong_ranking.Hanchan')),
('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
],
options={
'ordering': ['-score'],
},
),
migrations.AddField(
model_name='ladderranking',
name='season',
field=models.ForeignKey(to='mahjong_ranking.LadderSeason'),
),
migrations.AddField(
model_name='ladderranking',
name='user',
field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='hanchan',
name='players',
field=models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name='Spieler', through='mahjong_ranking.Player'),
),
migrations.AddField(
model_name='hanchan',
name='season',
field=models.ForeignKey(blank=True, editable=False, to='mahjong_ranking.LadderSeason', null=True),
),
migrations.AlterUniqueTogether(
name='player',
unique_together=set([('hanchan', 'user')]),
),
]

View File

@@ -12,9 +12,7 @@ from django.utils import timezone
from django.utils.translation import ugettext as _
from events.models import Event
from . import KYU_RANKS, DAN_RANKS, DAN_RANKS_DICT, MIN_HANCHANS_FOR_LADDER
from . import logger, set_dirty
from . import KYU_RANKS, DAN_RANKS, DAN_RANKS_DICT, MIN_HANCHANS_FOR_LADDER, logger, set_dirty
kyu_dan_rankings = set()
ladder_rankings = set()

View File

@@ -10,14 +10,8 @@
<legend>{% trans "Delete Hanchan" %}</legend>
{% include 'form.html' %}
<p class="buttonbar">
<button type="button" onclick="window.history.back()">
<img src="{{STATIC_URL}}icons/cancel.png" alt="{% trans 'Cancel' %}"/>
{% trans 'Cancel' %}
</button>
<button type="submit">
<img src="{{STATIC_URL}}icons/table_delete.png" alt="{% trans 'Delete' %}"/>
{% trans 'Delete' %}
</button>
<button type="button" onclick="window.history.back()"><span class="fa fa-close"></span> {% trans 'Cancel' %}</button>
<button type="submit"><span class="fa fa-trash"></span> {% trans 'Delete' %}</button>
</p>
</fieldset>
</form>

View File

@@ -48,8 +48,8 @@
<p class="buttonbar">
<a href="{{hanchan.get_absolute_url}}" class="button"><img src="{{STATIC_URL}}icons/arrow_undo.png" alt="{% trans 'back' %}" /> {% trans 'back' %}</a>
<button type="submit"><img src="{{STATIC_URL}}icons/table_save.png" alt="{% trans 'save' %}" /> {% trans 'save' %}</button>
<a href="{% url 'event-hanchan-list' event.pk %}" class="button"><span class="fa fa-undo"></span> {% trans 'back' %}</a>
<button type="submit"><span class="fa fa-hdd-o"></span> {% trans 'save' %}</button>
</p>
</fieldset>
</form>

View File

@@ -31,14 +31,10 @@
{% endif %}
<p class="grid_12 more_link">
{% if perms.mahjong_ranking.delete_hanchan %}
<a href="{% url 'delete-hanchan' hanchan.pk %}" class="button"><img src="{{STATIC_URL}}icons/table_delete.png"
alt="{% trans 'Delete' %}"/>
{% trans 'Delete Hanchan' %}</a>
<a href="{% url 'delete-hanchan' hanchan.pk %}" class="button"><span class="fa fa-trash"></span> {% trans 'Delete Hanchan' %}</a>
{% endif %}
{% if perms.mahjong_ranking.change_hanchan %}
<a href="{% url 'edit-hanchan' hanchan.pk %}" class="button"><img src="{{STATIC_URL}}icons/table_edit.png"
alt="{% trans 'Edit' %}"/>
{% trans 'Edit Hanchan' %}</a>
<a href="{% url 'edit-hanchan' hanchan.pk %}" class="button"><span class="fa fa-pencil"></span> {% trans 'Edit Hanchan' %}</a>
{% endif %}
</p>
{% empty %}
@@ -48,9 +44,7 @@
{% block buttonbar %}
{% if perms.mahjong_ranking.add_hanchan %}
<a class="button" href="{{event.get_edit_url}}"><img src="{{STATIC_URL}}icons/calendar_edit.png"
alt="{% trans 'Add' %}"/> {% trans 'Edit Event' %}</a>
<a class="button" href="{% url 'add-hanchan-form' event.id %}"><img src="{{STATIC_URL}}icons/table_add.png"
alt="{% trans 'Add' %}"/> {% trans 'Add Hanchan' %}</a>
<a class="button" href="{{event.get_edit_url}}"><span class="fa fa-pencil"></span> {% trans 'Edit Event' %}</a>
<a class="button" href="{% url 'add-hanchan-form' event.id %}"><span class="fa fa-plus-circle"></span> {% trans 'Add Hanchan' %}</a>
{% endif %}
{% endblock %}

View File

@@ -11,29 +11,29 @@
<tr>
<th>{% trans 'Avatar' %}</th>
<th>
<a href="{% url 'kyudanranking-list' order_by='+username' %}?page={{page_obj.number}}"><img src="{{STATIC_URL}}icons/bullet_arrow_up.png" alt="▴"/></a>
<a href="{% url 'kyudanranking-list' order_by='+username' %}?page={{page_obj.number}}" class="fa fa-sort-asc"></a>
{% trans 'Nickname' %}
<a href="{% url 'kyudanranking-list' order_by='-username' %}?page={{page_obj.number}}"><img src="{{STATIC_URL}}icons/bullet_arrow_down.png" alt="▾"/></a>
<a href="{% url 'kyudanranking-list' order_by='-username' %}?page={{page_obj.number}}" class="fa fa-sort-desc"></a>
</th>
<th>
<a href="{% url 'kyudanranking-list' order_by='+full_name'%}?page={{page_obj.number}}"><img src="{{STATIC_URL}}icons/bullet_arrow_up.png" alt="▴"/></a>
<a href="{% url 'kyudanranking-list' order_by='+full_name'%}?page={{page_obj.number}}" class="fa fa-sort-asc"></a>
{% trans 'Full Name' %}
<a href="{% url 'kyudanranking-list' order_by='-full_name' %}?page={{page_obj.number}}"><img src="{{STATIC_URL}}icons/bullet_arrow_down.png" alt="▾"/></a>
<a href="{% url 'kyudanranking-list' order_by='-full_name' %}?page={{page_obj.number}}" class="fa fa-sort-desc"></a>
</th>
<th>
<a href="{% url 'kyudanranking-list' order_by='+rank' %}?page={{page_obj.number}}"><img src="{{STATIC_URL}}icons/bullet_arrow_up.png" alt="▴"/></a>
<a href="{% url 'kyudanranking-list' order_by='+rank' %}?page={{page_obj.number}}" class="fa fa-sort-asc"></a>
{% trans 'Rank' %}
<a href="{% url 'kyudanranking-list' order_by='-rank' %}?page={{page_obj.number}}"><img src="{{STATIC_URL}}icons/bullet_arrow_down.png" alt="▾"/></a>
<a href="{% url 'kyudanranking-list' order_by='-rank' %}?page={{page_obj.number}}" class="fa fa-sort-desc"></a>
</th>
<th>
<a href="{% url 'kyudanranking-list' order_by='+score' %}?page={{page_obj.number}}"><img src="{{STATIC_URL}}icons/bullet_arrow_up.png" alt="▴"/></a>
<a href="{% url 'kyudanranking-list' order_by='+score' %}?page={{page_obj.number}}" class="fa fa-sort-asc"></a>
{% trans 'Score' %}
<a href="{% url 'kyudanranking-list' order_by='-score' %}?page={{page_obj.number}}"><img src="{{STATIC_URL}}icons/bullet_arrow_down.png" alt="▾"/></a>
<a href="{% url 'kyudanranking-list' order_by='-score' %}?page={{page_obj.number}}" class="fa fa-sort-desc"></a>
</th>
<th>
<a href="{% url 'kyudanranking-list' order_by='+hanchan_count'%}?page={{page_obj.number}}"><img src="{{STATIC_URL}}icons/bullet_arrow_up.png" alt="▴"/></a>
<a href="{% url 'kyudanranking-list' order_by='+hanchan_count'%}?page={{page_obj.number}}" class="fa fa-sort-asc"></a>
{% trans 'Games Total' %}
<a href="{% url 'kyudanranking-list' order_by='-hanchan_count'%}?page={{page_obj.number}}"><img src="{{STATIC_URL}}icons/bullet_arrow_down.png" alt="▾"/></a>
<a href="{% url 'kyudanranking-list' order_by='-hanchan_count'%}?page={{page_obj.number}}" class="fa fa-sort-desc"></a>
</th>
</tr>
</thead>

View File

@@ -5,9 +5,9 @@
<h2>Mahjong Ranking - {{season.name}}</h2>
<div id="teaser_text">
<ul class="info">
<li class="date">{% trans 'Start' %}: {{season.start}}</li>
<li class="date">{% trans 'End' %}: {{season.end}}</li>
<li class="user">{% trans 'Participants' %}: {{season.participants}}</li>
<li><span class="fa fa-calendar-o"></span> {% trans 'Start' %}: {{season.start}}</li>
<li><span class="fa fa-calendar-o"></span> {% trans 'End' %}: {{season.end}}</li>
<li><span class="fa fa-users"></span> {% trans 'Participants' %}: {{season.participants}}</li>
</ul>
</div>
{% endblock %}
@@ -48,7 +48,7 @@
{% endwith %}
{% empty %}
<tr>
<td colspan="8">Leider hat es noch niemand in das Ranking geschafft.
<td colspan="9">Leider hat es noch niemand in das Ranking geschafft.
Ein Spieler wird erst ins Ranking genommen wenn er 5 Hanchans absolviert hat.
</td>
</tr>
@@ -59,19 +59,18 @@
{% block redbox %}
<h2>{% trans 'Latest Hanchans' %}</h2>
<ul class="list">
<ul class="fa-ul">
{% for hanchan in latest_hanchan_list %}
<li class="hanchan">
<a href="{% url 'event-hanchan-list' hanchan.event.pk %}">{{hanchan.event.name}}</a>
<li><span class="fa-li fa fa-table"></span> <a href="{% url 'event-hanchan-list' hanchan.event.pk %}">{{hanchan.event.name}}</a>
{{hanchan.start|time:'H:i'}}:
<small>{{hanchan.player_names}}</small>
</li>
{% endfor %}
</ul>
<h3>{% trans 'Latest Events' %}</h3>
<ul class="list">
<ul class="fa-ul">
{% for event in latest_event_list %}
<li class="event"><a href="{% url 'event-hanchan-list' event.pk %}">{{event.name}}</a></li>
<li><span class="fa-li fa fa-calendar-o"></span> <a href="{% url 'event-hanchan-list' event.pk %}">{{event.name}}</a></li>
{% endfor %}
</ul>
<h3>{% trans 'Ladder Archive' %}</h3>

View File

@@ -1,8 +1,8 @@
{% extends "membership/membership_detail.html" %}
{% load i18n %}
{% block title %} {% trans 'Dan Score for' %} {{membership.user.username}} {% endblock %}
{% block teaser %}<h2>{% trans 'Dan Score for' %} {{membership.user.username}}</h2>{% endblock %}
{% block title %} {% trans 'Dan Score for' %} {{membership.username}} {% endblock %}
{% block teaser %}<h2>{% trans 'Dan Score for' %} {{membership.username}}</h2>{% endblock %}
{% block score_list %}
<div class="grid_12">
@@ -42,14 +42,10 @@
<td>{{ result.comment }}</td>
<td>
{% if perms.mahjong_ranking.delete_hanchan %}
<a href="{% url 'delete-hanchan' result.hanchan.pk %}"><img src="{{STATIC_URL}}icons/table_delete.png"
alt="{% trans 'Delete' %}"
title="{% trans 'Delete Hanchan' %}"/></a>
<a href="{% url 'delete-hanchan' result.hanchan.pk %}"><span class="fa fa-trash" title="{% trans 'Delete Hanchan' %}"></span></a>
{% endif %}
{% if perms.mahjong_ranking.change_hanchan %}
<a href="{% url 'edit-hanchan' result.hanchan.pk %}"><img src="{{STATIC_URL}}icons/table_edit.png"
alt="{% trans 'Edit' %}"
title="{% trans 'Edit Hanchan' %}"/></a>
<a href="{% url 'edit-hanchan' result.hanchan.pk %}"><span class="fa fa-pencil" title="{% trans 'Edit Hanchan' %}"></span></a>
{% endif %}
</td>
</tr>

View File

@@ -3,11 +3,11 @@
{% block title %} {% trans 'Kyu Score for' %} {{player.username}} {% endblock %}
{% block teaser %}<h2>{% trans 'Invalid hanchans with' %} {{membership.user.username}}</h2>{% endblock %}
{% block teaser %}<h2>{% trans 'Invalid hanchans with' %} {{membership.username}}</h2>{% endblock %}
{% block score_list %}
<div class="grid_12">
<h2>{% trans 'Invalid hanchans with' %} {{membership.user.username}}</h2>
<h2>{% trans 'Invalid hanchans with' %} {{membership.username}}</h2>
<table>
<thead><tr>
<th>{% trans 'Event' %}</th>
@@ -31,10 +31,10 @@
<td>{{ result.comment }}</td>
<td>
{% if perms.mahjong_ranking.delete_hanchan %}
<a href="{% url 'delete-hanchan' result.hanchan.pk %}"><img src="{{STATIC_URL}}icons/table_delete.png" alt="{% trans 'Delete' %}" title="{% trans 'Delete Hanchan' %}"/></a>
<a href="{% url 'delete-hanchan' result.hanchan.pk %}"><span class="fa fa-trash" title="{% trans 'Delete Hanchan' %}"></span></a>
{% endif %}
{% if perms.mahjong_ranking.change_hanchan %}
<a href="{% url 'edit-hanchan' result.hanchan.pk %}"><img src="{{STATIC_URL}}icons/table_edit.png" alt="{% trans 'Edit' %}" title="{% trans 'Edit Hanchan' %}"/></a>
<a href="{% url 'edit-hanchan' result.hanchan.pk %}"><span class="fa fa-pencil" title="{% trans 'Edit Hanchan' %}"></span></a>
{% endif %}
</td>
</tr>

View File

@@ -1,9 +1,9 @@
{% extends "membership/membership_detail.html" %}
{% load i18n %}
{% block title %} {% trans 'Kyu Score for' %} {{membership.user.username}} {% endblock %}
{% block title %} {% trans 'Kyu Score for' %} {{membership.username}} {% endblock %}
{% block teaser %}<h2>{% trans 'Kyu Score for' %}{{membership.user.username}}</h2>{% endblock %}
{% block teaser %}<h2>{% trans 'Kyu Score for' %}{{membership.username}}</h2>{% endblock %}
{% block score_list %}
<div class="grid_12">
@@ -39,10 +39,10 @@
<td class="center">{{result.kyu_points}}</td>
<td>
{% if perms.mahjong_ranking.delete_hanchan %}
<a href="{% url 'delete-hanchan' result.hanchan.pk %}"><img src="{{STATIC_URL}}icons/table_delete.png" alt="{% trans 'Delete' %}" title="{% trans 'Delete Hanchan' %}"/></a>
<a href="{% url 'delete-hanchan' result.hanchan.pk %}"><span class="fa fa-trash" title="{% trans 'Delete Hanchan' %}"></span></a>
{% endif %}
{% if perms.mahjong_ranking.change_hanchan %}
<a href="{% url 'edit-hanchan' result.hanchan.pk %}"><img src="{{STATIC_URL}}icons/table_edit.png" alt="{% trans 'Edit' %}" title="{% trans 'Edit Hanchan' %}"/></a>
<a href="{% url 'edit-hanchan' result.hanchan.pk %}"><span class="fa fa-pencil" title="{% trans 'Edit Hanchan' %}"></span></a>
{% endif %}
</td>
</tr>

View File

@@ -1,8 +1,8 @@
{% extends "membership/membership_detail.html" %}
{% load i18n %}
{% block title %} {% trans 'Ladder Score for' %} {{membership.user.username}} {% endblock %}
{% block teaser %}<h2>{% trans 'Ladder Score for' %} {{membership.user.username}}</h2>{% endblock %}
{% block title %} {% trans 'Ladder Score for' %} {{membership.username}} {% endblock %}
{% block teaser %}<h2>{% trans 'Ladder Score for' %} {{membership.username}}</h2>{% endblock %}
{% block score_list %}
<div class="grid_12">
@@ -36,10 +36,10 @@
{% endfor %}
<td>
{% if perms.mahjong_ranking.delete_hanchan %}
<a href="{% url 'delete-hanchan' result.hanchan.pk %}"><img src="{{STATIC_URL}}icons/table_delete.png" alt="{% trans 'Delete' %}" title="{% trans 'Delete Hanchan' %}"/></a>
<a href="{% url 'delete-hanchan' result.hanchan.pk %}"><span class="fa fa-trash" title="{% trans 'Delete Hanchan' %}"></span></a>
{% endif %}
{% if perms.mahjong_ranking.change_hanchan %}
<a href="{% url 'edit-hanchan' result.hanchan.pk %}"><img src="{{STATIC_URL}}icons/table_edit.png" alt="{% trans 'Edit' %}" title="{% trans 'Edit Hanchan' %}"/></a>
<a href="{% url 'edit-hanchan' result.hanchan.pk %}"><span class="fa fa-pencil" title="{% trans 'Edit Hanchan' %}"></span></a>
{% endif %}
</td>
</tr>
@@ -47,7 +47,7 @@
</tbody>
<tfooter>
<tr><td colspan="9" class="right">
<form action="{% url 'player-ladder-score' membership.user.username %}">
<form action="{% url 'player-ladder-score' membership.username %}">
<label for="id_season">{% trans 'Season' %}:</label> {{seasons_select_form.season}} <button type="submit">{% trans 'Go' %}</button>
</form>
</td></tr>

View File

@@ -293,9 +293,7 @@ class PlayerScore(LoginRequiredMixin, generic.ListView):
def get(self, request, *args, **kwargs):
try:
user_model = auth.get_user_model()
self.user = user_model.objects.get(
username=self.kwargs.get('username'))
self.membership = Membership.objects.get(user=self.user)
self.user = user_model.objects.get(username=self.kwargs.get('username'))
except user_model.DoesNotExist:
raise django.http.Http404(
_("No user found matching the name %s") % self.kwargs.get(
@@ -304,7 +302,7 @@ class PlayerScore(LoginRequiredMixin, generic.ListView):
def get_context_data(self, **kwargs):
context = generic.ListView.get_context_data(self, **kwargs)
context['membership'] = self.membership
context['membership'] = self.user
try:
context['kyu_dan_ranking'] = models.KyuDanRanking.objects.get(
user=self.user)