Merge branch 'master' into css3_redesign

# Conflicts:
#	requirements/base.txt
#	src/content/locale/de/LC_MESSAGES/django.mo
#	src/content/locale/de/LC_MESSAGES/django.po
#	src/events/locale/de/LC_MESSAGES/django.mo
#	src/events/locale/de/LC_MESSAGES/django.po
#	src/kasu/locale/de/LC_MESSAGES/django.po
#	src/mahjong_ranking/locale/de/LC_MESSAGES/django.mo
#	src/mahjong_ranking/locale/de/LC_MESSAGES/django.po
#	src/maistar_ranking/locale/de/LC_MESSAGES/django.po
#	src/membership/locale/de/LC_MESSAGES/django.mo
#	src/membership/locale/de/LC_MESSAGES/django.po
#	src/utils/locale/de/LC_MESSAGES/django.po
This commit is contained in:
2018-04-30 08:29:14 +02:00
64 changed files with 5966 additions and 1455 deletions

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kasu.mahjong_ranking\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-27 09:49+0200\n"
"POT-Creation-Date: 2018-01-11 22:50+0100\n"
"PO-Revision-Date: 2016-09-28 00:24+0200\n"
"Last-Translator: Christian Berg <xeniac.at@gmail.com>\n"
"Language-Team: Kasu <verein@kasu.at>\n"
@@ -19,205 +19,208 @@ msgstr ""
"X-Generator: Poedit 1.8.9\n"
"X-Translated-Using: django-rosetta 0.7.2\n"
#: admin.py:24
#: src/maistar_ranking/admin.py:24
msgid "Recalculate"
msgstr "Neuberechnen"
#: forms.py:35
#: src/maistar_ranking/forms.py:35
#, python-format
msgid "%s may only participate once."
msgstr "%s darf nur einmal teilnehmen."
#: models.py:20
#: src/maistar_ranking/models.py:21
msgid "Comment"
msgstr "Kommentar"
#: models.py:22
#: src/maistar_ranking/models.py:24
msgid "Player 1"
msgstr "Spieler 1"
#: models.py:24 models.py:30 models.py:36 models.py:42 models.py:48
#: models.py:54 templates/maistar_ranking/ranking_list.html:19
#: src/maistar_ranking/models.py:26 src/maistar_ranking/models.py:33
#: src/maistar_ranking/models.py:40 src/maistar_ranking/models.py:47
#: src/maistar_ranking/models.py:54 src/maistar_ranking/models.py:61
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:19
msgid "Score"
msgstr "Punkte"
#: models.py:28
#: src/maistar_ranking/models.py:31
msgid "Player 2"
msgstr "Spieler 2"
#: models.py:34
#: src/maistar_ranking/models.py:38
msgid "Player 3"
msgstr "Spieler 3"
#: models.py:40
#: src/maistar_ranking/models.py:45
msgid "Player 4"
msgstr "Spieler 4"
#: models.py:46
#: src/maistar_ranking/models.py:52
msgid "Player 5"
msgstr "Spieler 5"
#: models.py:52
#: src/maistar_ranking/models.py:59
msgid "Player 6"
msgstr "Spieler 6"
#: models.py:58
#: src/maistar_ranking/models.py:65
msgid "Has been confirmed"
msgstr "Wurde bestätigt"
#: models.py:60
#: src/maistar_ranking/models.py:67
msgid "the game only counts whe it has been confirmed"
msgstr "das Spiel zählt nur wenn es bestätigt wurde"
#: models.py:63 models.py:147 templates/maistar_ranking/player_game_list.html:6
#: templates/maistar_ranking/ranking_list.html:4
#: templates/maistar_ranking/ranking_list.html:72
#: src/maistar_ranking/models.py:70 src/maistar_ranking/models.py:153
#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:6
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:4
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:72
msgid "Season"
msgstr "Saison"
#: models.py:74
#: src/maistar_ranking/models.py:80
msgid "Mai-Star Game with {0} from {1:%Y-%m-%d}"
msgstr "Mai-Star Spiel mit {0} vom {1:%Y-%m-%d}"
#: templates/maistar_ranking/game_form.html:5
#: templates/maistar_ranking/game_form.html:16
#: templates/maistar_ranking/game_list.html:27
#: templates/maistar_ranking/player_game_list.html:44
#: src/maistar_ranking/templates/maistar_ranking/game_form.html:5
#: src/maistar_ranking/templates/maistar_ranking/game_form.html:16
#: src/maistar_ranking/templates/maistar_ranking/game_list.html:27
#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:44
msgid "Edit Game"
msgstr "Spiel bearbeiten"
#: templates/maistar_ranking/game_form.html:5
#: templates/maistar_ranking/game_form.html:16
#: templates/maistar_ranking/game_list.html:41
#: src/maistar_ranking/templates/maistar_ranking/game_form.html:5
#: src/maistar_ranking/templates/maistar_ranking/game_form.html:16
#: src/maistar_ranking/templates/maistar_ranking/game_list.html:41
msgid "Add Game"
msgstr "Spiel hinzufügen"
#: templates/maistar_ranking/game_form.html:76
#: src/maistar_ranking/templates/maistar_ranking/game_form.html:76
msgid "Back"
msgstr "Zurück"
#: templates/maistar_ranking/game_form.html:77
#: src/maistar_ranking/templates/maistar_ranking/game_form.html:77
msgid "Save"
msgstr "Speichern"
#: templates/maistar_ranking/game_list.html:4
#: templates/maistar_ranking/player_game_list.html:6
#: src/maistar_ranking/templates/maistar_ranking/game_list.html:4
#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:6
msgid "Mai-Star Games"
msgstr "Mai-Star Spiele"
#: templates/maistar_ranking/game_list.html:7
#: src/maistar_ranking/templates/maistar_ranking/game_list.html:7
msgid "Played Mai-Star Games"
msgstr "Gespielte Mai-Star Spiele"
#: templates/maistar_ranking/game_list.html:11
#: src/maistar_ranking/templates/maistar_ranking/game_list.html:11
msgid "Game"
msgstr "Spiel"
#: templates/maistar_ranking/game_list.html:14
#: src/maistar_ranking/templates/maistar_ranking/game_list.html:14
msgid "Place"
msgstr "Platz"
#: templates/maistar_ranking/game_list.html:19
#: templates/maistar_ranking/player_game_list.html:36
#: src/maistar_ranking/templates/maistar_ranking/game_list.html:19
#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:36
msgid "Points"
msgstr "Punkte"
#: templates/maistar_ranking/game_list.html:24
#: templates/maistar_ranking/player_game_list.html:41
#: src/maistar_ranking/templates/maistar_ranking/game_list.html:24
#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:41
msgid "Delete Game"
msgstr "Spiel löschen"
#: templates/maistar_ranking/game_list.html:33
#: src/maistar_ranking/templates/maistar_ranking/game_list.html:33
msgid "No Mai-Star games have been added to this event yet."
msgstr "Für diese Veranstaltung wurden noch keine Mai-Star Spiele erfasst."
#: templates/maistar_ranking/game_list.html:40
#: src/maistar_ranking/templates/maistar_ranking/game_list.html:40
msgid "Edit Event"
msgstr "Veranstaltung bearbeiten"
#: templates/maistar_ranking/hanchan_confirm_delete.html:4
#: templates/maistar_ranking/hanchan_confirm_delete.html:10
#: src/maistar_ranking/templates/maistar_ranking/hanchan_confirm_delete.html:4
#: src/maistar_ranking/templates/maistar_ranking/hanchan_confirm_delete.html:10
msgid "Delete game"
msgstr "Spiel löschen"
#: templates/maistar_ranking/hanchan_confirm_delete.html:13
#: src/maistar_ranking/templates/maistar_ranking/hanchan_confirm_delete.html:13
msgid "Cancel"
msgstr "Abbrechen"
#: templates/maistar_ranking/hanchan_confirm_delete.html:14
#: src/maistar_ranking/templates/maistar_ranking/hanchan_confirm_delete.html:14
msgid "Delete"
msgstr "Löschen"
#: templates/maistar_ranking/page.html:5
#: src/maistar_ranking/templates/maistar_ranking/page.html:5
msgid "Archive"
msgstr "Archiv"
#: templates/maistar_ranking/page.html:7
#: src/maistar_ranking/templates/maistar_ranking/page.html:7
msgid "Add Event"
msgstr "Veranstaltung hinzufügen"
#: templates/maistar_ranking/player_game_list.html:4
#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:4
msgid "Ladder Score for"
msgstr "Ladder Wertung für"
#: templates/maistar_ranking/player_game_list.html:9
#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:9
msgid "Mai-Star Games with"
msgstr "Mai-Star Spiele mit"
#: templates/maistar_ranking/player_game_list.html:14
#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:14
msgid "Date"
msgstr "Datum"
#: templates/maistar_ranking/player_game_list.html:15
#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:15
msgid "Event"
msgstr "Veranstaltung"
#: templates/maistar_ranking/player_game_list.html:16
#: src/maistar_ranking/templates/maistar_ranking/player_game_list.html:16
msgid "Players"
msgstr "Spieler"
#: templates/maistar_ranking/ranking_list.html:4
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:4
msgid "Mai-Star Ranking"
msgstr "Mai-Star Platzierung"
#: templates/maistar_ranking/ranking_list.html:10
#: templates/maistar_ranking/ranking_list.html:18
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:10
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:18
msgid "Placement"
msgstr "Platzierung"
#: templates/maistar_ranking/ranking_list.html:11
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:11
msgid "Avatar"
msgstr "Avatar"
#: templates/maistar_ranking/ranking_list.html:12
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:12
msgid "Nickname"
msgstr "Spitzname"
#: templates/maistar_ranking/ranking_list.html:13
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:13
msgid "Name"
msgstr "Name"
#: templates/maistar_ranking/ranking_list.html:14
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:14
msgid "Average"
msgstr "Durchschnitt"
#: templates/maistar_ranking/ranking_list.html:15
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:15
msgid "Games"
msgstr "Spiele"
#: templates/maistar_ranking/ranking_list.html:20
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:20
msgid "count"
msgstr "Anzahl"
#: templates/maistar_ranking/ranking_list.html:21
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:21
msgid "good"
msgstr "Gut"
#: templates/maistar_ranking/ranking_list.html:22
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:22
msgid "won"
msgstr "Gewonnen"
#: templates/maistar_ranking/ranking_list.html:43
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:43
msgid ""
"Unfortunately, nobody has it been done in the ranking.\n"
" A player must have 6 games done, to be added to the ranking."
@@ -226,15 +229,15 @@ msgstr ""
"als 6 Spiele innerhalb einer Saison absolviert haben, werden für das "
"Endergebnis nicht gewertet."
#: templates/maistar_ranking/ranking_list.html:52
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:52
msgid "Latest Games"
msgstr "Letzten Spiele"
#: templates/maistar_ranking/ranking_list.html:63
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:63
msgid "Latest Events"
msgstr "Letzten Veranstaltungen"
#: templates/maistar_ranking/ranking_list.html:70
#: src/maistar_ranking/templates/maistar_ranking/ranking_list.html:70
msgid "Ladder Archive"
msgstr "Archiv"

View File

@@ -37,19 +37,19 @@ class Migration(migrations.Migration):
('season', models.PositiveSmallIntegerField(
verbose_name='Saison', editable=False, db_index=True)),
('event', models.ForeignKey(
related_name='maistargame_set', to='events.Event')),
related_name='maistargame_set', to='events.Event', on_delete=models.CASCADE)),
('player1', models.ForeignKey(related_name='+',
verbose_name='Spieler 1', to=settings.AUTH_USER_MODEL)),
verbose_name='Spieler 1', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
('player2', models.ForeignKey(related_name='+',
verbose_name='Spieler 2', to=settings.AUTH_USER_MODEL)),
verbose_name='Spieler 2', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
('player3', models.ForeignKey(related_name='+',
verbose_name='Spieler 3', to=settings.AUTH_USER_MODEL)),
verbose_name='Spieler 3', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
('player4', models.ForeignKey(related_name='+',
verbose_name='Spieler 4', to=settings.AUTH_USER_MODEL)),
verbose_name='Spieler 4', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
('player5', models.ForeignKey(related_name='+',
verbose_name='Spieler 5', to=settings.AUTH_USER_MODEL)),
verbose_name='Spieler 5', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
('player6', models.ForeignKey(related_name='+',
verbose_name='Spieler 6', to=settings.AUTH_USER_MODEL)),
verbose_name='Spieler 6', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
],
),
migrations.CreateModel(
@@ -65,7 +65,7 @@ class Migration(migrations.Migration):
('games_count', models.PositiveSmallIntegerField(default=0)),
('games_good', models.PositiveSmallIntegerField(default=0)),
('games_won', models.PositiveSmallIntegerField(default=0)),
('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
],
options={
'ordering': ('-season', 'placement', 'avg_placement', '-avg_score'),

View File

@@ -0,0 +1,52 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.8 on 2017-12-14 11:15
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('maistar_ranking', '0006_auto_20171115_0653'),
]
operations = [
migrations.AlterField(
model_name='game',
name='player1',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Spieler 1'),
),
migrations.AlterField(
model_name='game',
name='player2',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Spieler 2'),
),
migrations.AlterField(
model_name='game',
name='player3',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Spieler 3'),
),
migrations.AlterField(
model_name='game',
name='player4',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Spieler 4'),
),
migrations.AlterField(
model_name='game',
name='player5',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Spieler 5'),
),
migrations.AlterField(
model_name='game',
name='player6',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Spieler 6'),
),
migrations.AlterField(
model_name='ranking',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
),
]

View File

@@ -2,11 +2,11 @@
import logging
from django.core.urlresolvers import reverse
from django.db import models
from django.db.models.signals import post_delete, post_save
from django.utils.translation import ugettext as _
from django.dispatch import receiver
from django.urls import reverse
from django.utils.translation import ugettext as _
from events.models import Event
from . import settings, managers
@@ -16,40 +16,47 @@ class Game(models.Model):
"""to record a complete game with 6 different players."""
_player_list = list()
event = models.ForeignKey(Event, related_name='maistargame_set')
event = models.ForeignKey(Event, on_delete=models.CASCADE,
related_name='maistargame_set')
comment = models.TextField(_('Comment'), blank=True)
player1 = models.ForeignKey(
settings.AUTH_USER_MODEL, verbose_name=_("Player 1"), related_name='+'
settings.AUTH_USER_MODEL, on_delete=models.PROTECT,
verbose_name=_("Player 1"), related_name='+'
)
player1_score = models.SmallIntegerField(_("Score"))
player1_placement = models.PositiveSmallIntegerField(editable=False)
player2 = models.ForeignKey(
settings.AUTH_USER_MODEL, verbose_name=_("Player 2"), related_name='+'
settings.AUTH_USER_MODEL, on_delete=models.PROTECT,
verbose_name=_("Player 2"), related_name='+'
)
player2_score = models.SmallIntegerField(_("Score"))
player2_placement = models.PositiveSmallIntegerField(editable=False)
player3 = models.ForeignKey(
settings.AUTH_USER_MODEL, verbose_name=_("Player 3"), related_name='+'
settings.AUTH_USER_MODEL, on_delete=models.PROTECT,
verbose_name=_("Player 3"), related_name='+'
)
player3_score = models.SmallIntegerField(_("Score"))
player3_placement = models.PositiveSmallIntegerField(editable=False)
player4 = models.ForeignKey(
settings.AUTH_USER_MODEL, verbose_name=_("Player 4"), related_name='+'
settings.AUTH_USER_MODEL, on_delete=models.PROTECT,
verbose_name=_("Player 4"), related_name='+'
)
player4_score = models.SmallIntegerField(_("Score"))
player4_placement = models.PositiveSmallIntegerField(editable=False)
player5 = models.ForeignKey(
settings.AUTH_USER_MODEL, verbose_name=_("Player 5"), related_name='+'
settings.AUTH_USER_MODEL, on_delete=models.PROTECT,
verbose_name=_("Player 5"), related_name='+'
)
player5_score = models.SmallIntegerField(_("Score"))
player5_placement = models.PositiveSmallIntegerField(editable=False)
player6 = models.ForeignKey(
settings.AUTH_USER_MODEL, verbose_name=_("Player 6"), related_name='+'
settings.AUTH_USER_MODEL, on_delete=models.PROTECT,
verbose_name=_("Player 6"), related_name='+'
)
player6_score = models.SmallIntegerField(_("Score"))
player6_placement = models.PositiveSmallIntegerField(editable=False)
@@ -69,7 +76,6 @@ class Game(models.Model):
"""Display rankings by placement, best players first."""
ordering = ('-event__start', '-id')
def __str__(self):
return _("Mai-Star Game with {0} from {1:%Y-%m-%d}").format(
self.player_names, self.event.start
@@ -143,7 +149,7 @@ class Game(models.Model):
class Ranking(models.Model):
"""the player scores in the ladder for one season. """
user = models.ForeignKey(settings.AUTH_USER_MODEL)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
season = models.PositiveSmallIntegerField(_("Season"))
placement = models.PositiveIntegerField(blank=True, null=True)
avg_placement = models.PositiveSmallIntegerField(blank=True, null=True)

View File

@@ -3,7 +3,7 @@
from datetime import date
from django.contrib import auth
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.shortcuts import get_object_or_404
from django.views import generic