Merge branch 'dsgvo'

This commit is contained in:
2018-05-08 12:15:12 +02:00
33 changed files with 1275 additions and 1308 deletions

View File

@@ -4,18 +4,17 @@ echo "aktualisiere Übersetzungen..."
cd src cd src
unset DJANGO_SETTINGS_MODULE unset DJANGO_SETTINGS_MODULE
for dir in * for dir in *
do do
if [ -d ${dir}/locale ] if [ -d ${dir}/locale ]
echo "Übersetze $dir"
then then
echo -n "$dir: " echo -n "$dir: "
cd ${dir} cd ${dir}
django-admin.py makemessages -l de django-admin.py makemessages -l de
cd .. cd ..
fi fi
done done
sleep 5s sleep 5s
export DJANGO_SETTINGS_MODULE="kasu.settings.production" export DJANGO_SETTINGS_MODULE="kasu.settings"
./manage.py compilemessages ./manage.py compilemessages
echo "lösche den Python Compiler Cache..." echo "lösche den Python Compiler Cache..."
@@ -23,5 +22,5 @@ find . -name "*.pyc" -exec rm -rf {} \;
echo "Aktualisiere Statics" echo "Aktualisiere Statics"
./manage.py collectstatic --noinput -c ./manage.py collectstatic --noinput -c
echo "Erstelle Vorschaubilder" echo "Erstelle Vorschaubilder"
./manage.py generateimages ./manage.py thumbnail_cleanup
touch kasu/wsgi.py touch kasu/wsgi.py

View File

@@ -17,5 +17,3 @@ PyJWT
pytz pytz
requests requests
requests-oauthlib requests-oauthlib
social-auth-app-django
social-auth-core

View File

@@ -3,7 +3,7 @@
from django.core.cache import cache from django.core.cache import cache
from . import models from . import models
from utils import STATUS_PUBLISHED
def content_menus(request): def content_menus(request):
""" Generate the menu tree and add these info to the template context. """ Generate the menu tree and add these info to the template context.
@@ -50,7 +50,7 @@ def content_menus(request):
break break
current_path = current_path[0:current_path.rfind('.')] current_path = current_path[0:current_path.rfind('.')]
return {'top_menu_items': top_level_pages, return {'top_menu_items': top_level_pages.filter(status=STATUS_PUBLISHED),
'current_top_page': current_top_page, 'current_top_page': current_top_page,
'current_path': current_path, 'current_path': current_path,
'current_page': current_page} 'current_page': current_page}

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kasu.content\n" "Project-Id-Version: kasu.content\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-11 22:50+0100\n" "POT-Creation-Date: 2018-05-08 00:17+0200\n"
"PO-Revision-Date: 2018-01-12 15:25+0105\n" "PO-Revision-Date: 2018-01-12 15:25+0105\n"
"Last-Translator: b'Christian Berg <kasu@xendynastie.at>'\n" "Last-Translator: b'Christian Berg <kasu@xendynastie.at>'\n"
"Language-Team: Deutsch <>\n" "Language-Team: Deutsch <>\n"
@@ -20,258 +20,252 @@ msgstr ""
"X-Generator: Poedit 1.8.9\n" "X-Generator: Poedit 1.8.9\n"
"X-Translated-Using: django-rosetta 0.7.14\n" "X-Translated-Using: django-rosetta 0.7.14\n"
#: src/content/feeds.py:18 #: .\content\feeds.py:18
msgid "Current news from Kasu" msgid "Current news from Kasu"
msgstr "Aktuelle Nachrichten von Kasu" msgstr "Aktuelle Nachrichten von Kasu"
#: src/content/feeds.py:51 #: .\content\feeds.py:51
msgid "Latest comments on kasu.at" msgid "Latest comments on kasu.at"
msgstr "Neueste Kommentare auf Kasu.at " msgstr "Neueste Kommentare auf Kasu.at "
#: src/content/feeds.py:52 #: .\content\feeds.py:52
msgid "Kasu - latest comments" msgid "Kasu - latest comments"
msgstr "Kasu - neue Kommentare" msgstr "Kasu - neue Kommentare"
#: src/content/forms.py:57 src/content/models.py:318 #: .\content\forms.py:57 .\content\models.py:318
msgid "Please upload a PDF-File to this PDF-Page." msgid "Please upload a PDF-File to this PDF-Page."
msgstr "Bitte eine PDF Datei für diese PDF Seite hochladen." msgstr "Bitte eine PDF Datei für diese PDF Seite hochladen."
#: src/content/models.py:76 #: .\content\models.py:76
msgid "Headline" msgid "Headline"
msgstr "Schlagzeile" msgstr "Schlagzeile"
#: src/content/models.py:78 #: .\content\models.py:78
msgid "Content" msgid "Content"
msgstr "Inhalt" msgstr "Inhalt"
#: src/content/models.py:82 src/content/models.py:150 #: .\content\models.py:82 .\content\models.py:150
#: src/content/templates/content/article_detail.html:25 #: .\content\templates\content\article_detail.html:25
msgid "Category" msgid "Category"
msgstr "Kategorie" msgstr "Kategorie"
#: src/content/models.py:83 src/content/models.py:143 #: .\content\models.py:83 .\content\models.py:143
msgid "Image" msgid "Image"
msgstr "Bild" msgstr "Bild"
#: src/content/models.py:85 src/content/models.py:145 #: .\content\models.py:85 .\content\models.py:145
msgid "Slug" msgid "Slug"
msgstr "Slug" msgstr "Slug"
#: src/content/models.py:88 #: .\content\models.py:88 .\content\templates\content\article_detail.html:23
#: src/content/templates/content/article_detail.html:23
msgid "Author" msgid "Author"
msgstr "Autor" msgstr "Autor"
#: src/content/models.py:89 #: .\content\models.py:89
msgid "Status" msgid "Status"
msgstr "Status" msgstr "Status"
#: src/content/models.py:91 #: .\content\models.py:91
msgid "Created" msgid "Created"
msgstr "Erstellt" msgstr "Erstellt"
#: src/content/models.py:92 #: .\content\models.py:92
msgid "Modified" msgid "Modified"
msgstr "Bearbeitet" msgstr "Bearbeitet"
#: src/content/models.py:97 #: .\content\models.py:97
msgid "Article" msgid "Article"
msgstr "Artikel" msgstr "Artikel"
#: src/content/models.py:98 #: .\content\models.py:98
msgid "Articles" msgid "Articles"
msgstr "Artikel" msgstr "Artikel"
#: src/content/models.py:139 src/content/models.py:140 #: .\content\models.py:139 .\content\models.py:140
msgid "Name" msgid "Name"
msgstr "Name" msgstr "Name"
#: src/content/models.py:141 src/content/models.py:142 #: .\content\models.py:141 .\content\models.py:142
msgid "Description" msgid "Description"
msgstr "Beschreibung" msgstr "Beschreibung"
#: src/content/models.py:151 #: .\content\models.py:151
msgid "Categories" msgid "Categories"
msgstr "Kategorien" msgstr "Kategorien"
#: src/content/models.py:182 src/content/models.py:188 #: .\content\models.py:182 .\content\models.py:188
msgid "The short name for the menu-entry of this page" msgid "The short name for the menu-entry of this page"
msgstr "Ein kurzer Name für den Menüeintrag" msgstr "Ein kurzer Name für den Menüeintrag"
#: src/content/models.py:193 src/content/models.py:198 #: .\content\models.py:193 .\content\models.py:198
msgid "The page title as you'd like it to be seen by the public" msgid "The page title as you'd like it to be seen by the public"
msgstr "Der Seitentitel der öffentlich angezeigt werden soll" msgstr "Der Seitentitel der öffentlich angezeigt werden soll"
#: src/content/models.py:200 #: .\content\models.py:200
msgid "slug" msgid "slug"
msgstr "Slug" msgstr "Slug"
#: src/content/models.py:203 #: .\content\models.py:203
msgid "" msgid ""
"The name of the page as it will appear in URLs e.g " "The name of the page as it will appear in URLs e.g http://domain.com/blog/"
"http://domain.com/blog/[my-slug]/" "[my-slug]/"
msgstr "" msgstr "Wie die Seite in der URL aufscheint also http://domain.com/blog/[slug]"
"Wie die Seite in der URL aufscheint also http://domain.com/blog/[slug]"
#: src/content/models.py:212 #: .\content\models.py:212
msgid "Path" msgid "Path"
msgstr "Pfad" msgstr "Pfad"
#: src/content/models.py:224 #: .\content\models.py:224
msgid "Position" msgid "Position"
msgstr "Position" msgstr "Position"
#: src/content/models.py:229 #: .\content\models.py:229
msgid "status" msgid "status"
msgstr "Status" msgstr "Status"
#: src/content/models.py:232 src/content/models.py:234 #: .\content\models.py:232 .\content\models.py:234
#| msgid "Description"
msgid "search description" msgid "search description"
msgstr "Beschreibung für Suchfunktion" msgstr "Beschreibung für Suchfunktion"
#: src/content/models.py:237 #: .\content\models.py:237
#| msgid "Content"
msgid "content type" msgid "content type"
msgstr "Inhaltstyp" msgstr "Inhaltstyp"
#: src/content/models.py:242 #: .\content\models.py:242
msgid "enable comments" msgid "enable comments"
msgstr "Kommentare möglich" msgstr "Kommentare möglich"
#: src/content/models.py:247 #: .\content\models.py:247
msgid "Template" msgid "Template"
msgstr "Vorlage" msgstr "Vorlage"
#: src/content/models.py:255 #: .\content\models.py:255
#| msgid "created on"
msgid "first created at" msgid "first created at"
msgstr "erstellt am" msgstr "erstellt am"
#: src/content/models.py:260 #: .\content\models.py:260
msgid "latest updated at" msgid "latest updated at"
msgstr "letzte Aktualisierung am" msgstr "letzte Aktualisierung am"
#: src/content/models.py:331 #: .\content\models.py:331
msgid "Page" msgid "Page"
msgstr "Seite" msgstr "Seite"
#: src/content/models.py:332 #: .\content\models.py:332
msgid "Pages" msgid "Pages"
msgstr "Seiten" msgstr "Seiten"
#: src/content/templates/content/article_archive.html:5 #: .\content\templates\content\article_archive.html:5
#: src/content/templates/content/article_archive.html:20 #: .\content\templates\content\article_archive.html:20
msgid "Article Archive" msgid "Article Archive"
msgstr "Nachrichtenarchiv" msgstr "Nachrichtenarchiv"
#: src/content/templates/content/article_archive.html:35 #: .\content\templates\content\article_archive.html:35
#: src/content/templates/content/article_archive_month.html:5 #: .\content\templates\content\article_archive_month.html:5
#: src/content/templates/content/article_archive_year.html:7 #: .\content\templates\content\article_archive_year.html:7
msgid "Archive" msgid "Archive"
msgstr "Archiv" msgstr "Archiv"
#: src/content/templates/content/article_archive.html:56 #: .\content\templates\content\article_archive.html:56
msgid "All Categories" msgid "All Categories"
msgstr "Alle Kategorien" msgstr "Alle Kategorien"
#: src/content/templates/content/article_archive.html:71 #: .\content\templates\content\article_archive.html:71
msgid "created on" msgid "created on"
msgstr "erstellt am" msgstr "erstellt am"
#: src/content/templates/content/article_archive.html:73 #: .\content\templates\content\article_archive.html:73
msgid "by" msgid "by"
msgstr "von" msgstr "von"
#: src/content/templates/content/article_archive.html:74 #: .\content\templates\content\article_archive.html:74
#: src/content/templates/content/article_archive.html:75 #: .\content\templates\content\article_archive.html:75
msgid "comments" msgid "comments"
msgstr "Kommentare" msgstr "Kommentare"
#: src/content/templates/content/article_archive.html:81 #: .\content\templates\content\article_archive.html:81
msgid "Read More" msgid "Read More"
msgstr "Mehr lesen" msgstr "Mehr lesen"
#: src/content/templates/content/article_archive.html:86 #: .\content\templates\content\article_archive.html:86
msgid "We're sorry. Your search yielded no results." msgid "We're sorry. Your search yielded no results."
msgstr "Es tut uns leid. Deine Suche ergab keine Treffer." msgstr "Es tut uns leid. Deine Suche ergab keine Treffer."
#: src/content/templates/content/article_archive.html:104 #: .\content\templates\content\article_archive.html:104
msgid "Add Article" msgid "Add Article"
msgstr "neuer Artikel " msgstr "neuer Artikel "
#: src/content/templates/content/article_archive_month.html:7 #: .\content\templates\content\article_archive_month.html:7
msgid "back" msgid "back"
msgstr "Zurück" msgstr "Zurück"
#: src/content/templates/content/article_detail.html:24 #: .\content\templates\content\article_detail.html:24
msgid "Created on" msgid "Created on"
msgstr "Erstellt am" msgstr "Erstellt am"
#: src/content/templates/content/article_detail.html:36 #: .\content\templates\content\article_detail.html:36
msgid "share on" msgid "share on"
msgstr "Teile auf" msgstr "Teile auf"
#: src/content/templates/content/article_detail.html:51 #: .\content\templates\content\article_detail.html:51 .\content\views.py:156
#: src/content/views.py:156
msgid "Edit Article" msgid "Edit Article"
msgstr "Artikel bearbeiten" msgstr "Artikel bearbeiten"
#: src/content/templates/content/article_form.html:32 #: .\content\templates\content\article_form.html:32
#: src/content/templates/content/page_form.html:42 #: .\content\templates\content\page_form.html:42
#: src/content/templates/content/page_form.html:49 #: .\content\templates\content\page_form.html:49
msgid "German" msgid "German"
msgstr "Deutsch" msgstr "Deutsch"
#: src/content/templates/content/article_form.html:33 #: .\content\templates\content\article_form.html:33
#: src/content/templates/content/page_form.html:43 #: .\content\templates\content\page_form.html:43
#: src/content/templates/content/page_form.html:57 #: .\content\templates\content\page_form.html:57
msgid "English" msgid "English"
msgstr "Englisch" msgstr "Englisch"
#: src/content/templates/content/article_form.html:59 #: .\content\templates\content\article_form.html:59
#: src/content/templates/content/page_form.html:66 #: .\content\templates\content\page_form.html:66
msgid "reset" msgid "reset"
msgstr "Zurücksetzen" msgstr "Zurücksetzen"
#: src/content/templates/content/article_form.html:60 #: .\content\templates\content\article_form.html:60
#: src/content/templates/content/page_form.html:67 #: .\content\templates\content\page_form.html:67
msgid "save" msgid "save"
msgstr "Speichern" msgstr "Speichern"
#: src/content/templates/content/page_form.html:5 #: .\content\templates\content\page_form.html:5
#: src/content/templates/content/page_form.html:35 #: .\content\templates\content\page_form.html:35
msgid "Edit Page" msgid "Edit Page"
msgstr "Seite bearbeiten" msgstr "Seite bearbeiten"
#: src/content/templates/content/page_form.html:5 #: .\content\templates\content\page_form.html:5
#: src/content/templates/content/page_form.html:19 #: .\content\templates\content\page_form.html:19
#: src/content/templates/content/page_form.html:35 #: .\content\templates\content\page_form.html:35
msgid "Add Page" msgid "Add Page"
msgstr "Seite hinzufügen" msgstr "Seite hinzufügen"
#: src/content/templates/content/page_form.html:18 #: .\content\templates\content\page_form.html:18
msgid "Edit" msgid "Edit"
msgstr "Bearbeiten" msgstr "Bearbeiten"
#: src/content/templates/content/page_form.html:37 #: .\content\templates\content\page_form.html:37
msgid "HTML Specific" msgid "HTML Specific"
msgstr "HTML spezifisch" msgstr "HTML spezifisch"
#: src/content/views.py:53 #: .\content\views.py:53
msgid "This Category does not exist." msgid "This Category does not exist."
msgstr "Diese Kategorie existiert nicht." msgstr "Diese Kategorie existiert nicht."
#: src/content/views.py:157 #: .\content\views.py:157
msgid "Create Article" msgid "Create Article"
msgstr "Artikel erstellen" msgstr "Artikel erstellen"
#: src/content/views.py:233 #: .\content\views.py:233
#, python-format #, python-format
msgid "No Page found matching the Path %s" msgid "No Page found matching the Path %s"
msgstr "Keine Seite unter dem Pfad %s gefunden" msgstr "Keine Seite unter dem Pfad %s gefunden"
#: src/content/views.py:262 #: .\content\views.py:262
#, python-format #, python-format
msgid "No PDF Document found matching the Path %s" msgid "No PDF Document found matching the Path %s"
msgstr "Kein PDF Dokument unter dem Pfad %s gefunden." msgstr "Kein PDF Dokument unter dem Pfad %s gefunden."

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kasu.events\n" "Project-Id-Version: kasu.events\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-11 22:50+0100\n" "POT-Creation-Date: 2018-05-08 00:17+0200\n"
"PO-Revision-Date: 2018-01-12 15:25+0105\n" "PO-Revision-Date: 2018-01-12 15:25+0105\n"
"Last-Translator: b'Christian Berg <kasu@xendynastie.at>'\n" "Last-Translator: b'Christian Berg <kasu@xendynastie.at>'\n"
"Language-Team: Kasu <verein@kasu.at>\n" "Language-Team: Kasu <verein@kasu.at>\n"
@@ -19,58 +19,58 @@ msgstr ""
"X-Generator: Poedit 1.8.9\n" "X-Generator: Poedit 1.8.9\n"
"X-Translated-Using: django-rosetta 0.7.14\n" "X-Translated-Using: django-rosetta 0.7.14\n"
#: src/events/admin.py:14 src/events/models.py:82 #: .\events\admin.py:14 .\events\models.py:82
msgid "Event Series" msgid "Event Series"
msgstr "Veranstaltungsreihen" msgstr "Veranstaltungsreihen"
#: src/events/forms.py:17 #: .\events\forms.py:17
msgid "Images" msgid "Images"
msgstr "Bilder" msgstr "Bilder"
#: src/events/forms.py:46 #: .\events\forms.py:46
msgid "start" msgid "start"
msgstr "Beginn" msgstr "Beginn"
#: src/events/forms.py:49 #: .\events\forms.py:49
msgid "end" msgid "end"
msgstr "Ende" msgstr "Ende"
#: src/events/models.py:52 src/events/models.py:176 src/events/models.py:217 #: .\events\models.py:52 .\events\models.py:176 .\events\models.py:217
msgid "Name" msgid "Name"
msgstr "Name" msgstr "Name"
#: src/events/models.py:53 src/events/models.py:177 src/events/models.py:225 #: .\events\models.py:53 .\events\models.py:177 .\events\models.py:225
msgid "Description" msgid "Description"
msgstr "Beschreibung" msgstr "Beschreibung"
#: src/events/models.py:55 src/events/templates/events/event_detail.html:29 #: .\events\models.py:55 .\events\templates\events\event_detail.html:29
#: src/events/templates/events/event_detail.html:87 #: .\events\templates\events\event_detail.html:87
#: src/events/templates/events/event_list.html:28 #: .\events\templates\events\event_list.html:28
#: src/events/templates/events/photo_upload.html:13 #: .\events\templates\events\photo_upload.html:13
msgid "Start" msgid "Start"
msgstr "Beginn" msgstr "Beginn"
#: src/events/models.py:56 src/events/templates/events/event_detail.html:30 #: .\events\models.py:56 .\events\templates\events\event_detail.html:30
#: src/events/templates/events/event_detail.html:89 #: .\events\templates\events\event_detail.html:89
msgid "End" msgid "End"
msgstr "Ende" msgstr "Ende"
#: src/events/models.py:57 src/events/models.py:185 #: .\events\models.py:57 .\events\models.py:185
#: src/events/templates/events/event_detail.html:34 #: .\events\templates\events\event_detail.html:34
#: src/events/templates/events/event_detail.html:80 #: .\events\templates\events\event_detail.html:80
#: src/events/templates/events/event_detail.html:92 #: .\events\templates\events\event_detail.html:92
msgid "Homepage" msgid "Homepage"
msgstr "Homepage" msgstr "Homepage"
#: src/events/models.py:59 src/events/models.py:179 src/events/models.py:219 #: .\events\models.py:59 .\events\models.py:179 .\events\models.py:219
msgid "Image" msgid "Image"
msgstr "Bild" msgstr "Bild"
#: src/events/models.py:66 #: .\events\models.py:66
msgid "Mahjong Tournament" msgid "Mahjong Tournament"
msgstr "Mahjong Turnier" msgstr "Mahjong Turnier"
#: src/events/models.py:68 #: .\events\models.py:68
msgid "" msgid ""
"This event is a tournament, different rules apply for the kyu " "This event is a tournament, different rules apply for the kyu "
"ranking." "ranking."
@@ -78,11 +78,11 @@ msgstr ""
"Diese Veranstaltung ist ein Turnier, es gelten andere Regeln für das Kyu " "Diese Veranstaltung ist ein Turnier, es gelten andere Regeln für das Kyu "
"Ranking." "Ranking."
#: src/events/models.py:72 #: .\events\models.py:72
msgid "Mahjong Season" msgid "Mahjong Season"
msgstr "Mahjong Saison" msgstr "Mahjong Saison"
#: src/events/models.py:83 #: .\events\models.py:83
msgid "" msgid ""
"Wenn dieser Event zu einer Veranstaltungsreihe gehört werden Ort, " "Wenn dieser Event zu einer Veranstaltungsreihe gehört werden Ort, "
"Beschreibung, Bild und Homepage von dem hier angegebenen Event " "Beschreibung, Bild und Homepage von dem hier angegebenen Event "
@@ -91,245 +91,245 @@ msgstr ""
"Wenn dieser Termin zu einer Veranstaltungsreihe gehört werden Ort, " "Wenn dieser Termin zu einer Veranstaltungsreihe gehört werden Ort, "
"Beschreibung, Bild und Homepage von dem hier angegebenen Event übernommen." "Beschreibung, Bild und Homepage von dem hier angegebenen Event übernommen."
#: src/events/models.py:92 src/events/models.py:195 src/events/models.py:248 #: .\events\models.py:92 .\events\models.py:195 .\events\models.py:248
msgid "first created at" msgid "first created at"
msgstr "erstellt am" msgstr "erstellt am"
#: src/events/models.py:97 src/events/models.py:200 src/events/models.py:253 #: .\events\models.py:97 .\events\models.py:200 .\events\models.py:253
msgid "latest updated at" msgid "latest updated at"
msgstr "letzte Aktualisierung am" msgstr "letzte Aktualisierung am"
#: src/events/models.py:103 #: .\events\models.py:103
msgid "Event" msgid "Event"
msgstr "Termin" msgstr "Termin"
#: src/events/models.py:104 #: .\events\models.py:104
msgid "Events" msgid "Events"
msgstr "Termine" msgstr "Termine"
#: src/events/models.py:117 #: .\events\models.py:117
msgid "A event can't end before it had started" msgid "A event can't end before it had started"
msgstr "Eine Veranstaltung kann nicht enden bevor sie begonnen hat" msgstr "Eine Veranstaltung kann nicht enden bevor sie begonnen hat"
#: src/events/models.py:186 #: .\events\models.py:186
msgid "Postal Code" msgid "Postal Code"
msgstr "Postleitzahl" msgstr "Postleitzahl"
#: src/events/models.py:187 #: .\events\models.py:187
msgid "Street Address" msgid "Street Address"
msgstr "Straße" msgstr "Straße"
#: src/events/models.py:188 #: .\events\models.py:188
msgid "Locality" msgid "Locality"
msgstr "Ort" msgstr "Ort"
#: src/events/models.py:189 #: .\events\models.py:189
msgid "Country" msgid "Country"
msgstr "Land" msgstr "Land"
#: src/events/models.py:204 #: .\events\models.py:204
msgid "Venue" msgid "Venue"
msgstr "Veranstaltungsort" msgstr "Veranstaltungsort"
#: src/events/models.py:205 #: .\events\models.py:205
msgid "Venues" msgid "Venues"
msgstr "Veranstaltungsorte" msgstr "Veranstaltungsorte"
#: src/events/models.py:232 #: .\events\models.py:232
msgid "Startpage" msgid "Startpage"
msgstr "Startseite" msgstr "Startseite"
#: src/events/models.py:235 #: .\events\models.py:235
msgid "Display this Photo on the Startpage Teaser" msgid "Display this Photo on the Startpage Teaser"
msgstr "Foto als Teaser auf der Startseite verwenden." msgstr "Foto als Teaser auf der Startseite verwenden."
#: src/events/models.py:237 #: .\events\models.py:237
msgid "Published on" msgid "Published on"
msgstr "Veröffentlicht am" msgstr "Veröffentlicht am"
#: src/events/models.py:239 #: .\events\models.py:239
msgid "Number of views" msgid "Number of views"
msgstr "Wie oft gesehen" msgstr "Wie oft gesehen"
#: src/events/models.py:263 src/events/templates/events/event_archive.html:38 #: .\events\models.py:263 .\events\templates\events\event_archive.html:38
#: src/events/templates/events/event_list.html:18 #: .\events\templates\events\event_list.html:18
msgid "Event Image" msgid "Event Image"
msgstr "Veranstaltungsbild" msgstr "Veranstaltungsbild"
#: src/events/models.py:264 #: .\events\models.py:264
msgid "Event Images" msgid "Event Images"
msgstr "Veranstaltungsbilder" msgstr "Veranstaltungsbilder"
#: src/events/templates/events/event_archive.html:5 #: .\events\templates\events\event_archive.html:5
#: src/events/templates/events/event_archive.html:9 #: .\events\templates\events\event_archive.html:9
msgid "Event Archive" msgid "Event Archive"
msgstr "Veranstaltungsarchiv" msgstr "Veranstaltungsarchiv"
#: src/events/templates/events/event_archive.html:42 #: .\events\templates\events\event_archive.html:42
#: src/events/templates/events/event_detail.html:85 #: .\events\templates\events\event_detail.html:85
#: src/events/templates/events/event_list.html:22 #: .\events\templates\events\event_list.html:22
#: src/events/templates/events/photo_detail.html:53 #: .\events\templates\events\photo_detail.html:53
msgid "Date" msgid "Date"
msgstr "Datum" msgstr "Datum"
#: src/events/templates/events/event_archive.html:47 #: .\events\templates\events\event_archive.html:47
msgid "Time" msgid "Time"
msgstr "Zeit" msgstr "Zeit"
#: src/events/templates/events/event_archive.html:49 #: .\events\templates\events\event_archive.html:49
#: src/events/templates/events/photo_upload.html:16 #: .\events\templates\events\photo_upload.html:16
msgid "from" msgid "from"
msgstr "von" msgstr "von"
#: src/events/templates/events/event_archive.html:49 #: .\events\templates\events\event_archive.html:49
#: src/events/templates/events/photo_upload.html:16 #: .\events\templates\events\photo_upload.html:16
msgid "to" msgid "to"
msgstr "bis" msgstr "bis"
#: src/events/templates/events/event_archive.html:57 #: .\events\templates\events\event_archive.html:57
#: src/events/templates/events/event_detail.html:31 #: .\events\templates\events\event_detail.html:31
#: src/events/templates/events/event_detail.html:72 #: .\events\templates\events\event_detail.html:72
#: src/events/templates/events/event_list.html:32 #: .\events\templates\events\event_list.html:32
#: src/events/templates/events/photo_upload.html:23 #: .\events\templates\events\photo_upload.html:23
msgid "Location" msgid "Location"
msgstr "Ort" msgstr "Ort"
#: src/events/templates/events/event_archive.html:58 #: .\events\templates\events\event_archive.html:58
#: src/events/templates/events/event_list.html:35 #: .\events\templates\events\event_list.html:35
#: src/events/templates/events/photo_upload.html:25 #: .\events\templates\events\photo_upload.html:25
#: src/events/templates/events/photo_upload.html:26 #: .\events\templates\events\photo_upload.html:26
msgid "Comments" msgid "Comments"
msgstr "Kommentare" msgstr "Kommentare"
#: src/events/templates/events/event_archive.html:59 #: .\events\templates\events\event_archive.html:59
#: src/events/templates/events/event_detail.html:36 #: .\events\templates\events\event_detail.html:36
#: src/events/templates/events/event_detail.html:48 #: .\events\templates\events\event_detail.html:48
#: src/events/templates/events/photo_list.html:4 #: .\events\templates\events\photo_list.html:4
#: src/events/templates/events/photo_upload.html:28 #: .\events\templates\events\photo_upload.html:28
#: src/events/templates/events/photo_upload.html:29 #: .\events\templates\events\photo_upload.html:29
msgid "Photos" msgid "Photos"
msgstr "Fotos" msgstr "Fotos"
#: src/events/templates/events/event_archive.html:60 #: .\events\templates\events\event_archive.html:60
#: src/events/templates/events/event_archive.html:61 #: .\events\templates\events\event_archive.html:61
#: src/events/templates/events/event_detail.html:35 #: .\events\templates\events\event_detail.html:35
#: src/events/templates/events/event_detail.html:51 #: .\events\templates\events\event_detail.html:51
msgid "Hanchans" msgid "Hanchans"
msgstr "Hanchans" msgstr "Hanchans"
#: src/events/templates/events/event_detail.html:37 #: .\events\templates\events\event_detail.html:37
msgid "tourney" msgid "tourney"
msgstr "Turnier" msgstr "Turnier"
#: src/events/templates/events/event_detail.html:37 #: .\events\templates\events\event_detail.html:37
msgid "other rules apply here" msgid "other rules apply here"
msgstr "hier gelten andere Regeln" msgstr "hier gelten andere Regeln"
#: src/events/templates/events/event_detail.html:45 #: .\events\templates\events\event_detail.html:45
msgid "Info" msgid "Info"
msgstr "Info" msgstr "Info"
#: src/events/templates/events/event_detail.html:54 #: .\events\templates\events\event_detail.html:54
msgid "Mai-Star Games" msgid "Mai-Star Games"
msgstr "Mai-Star Spiele" msgstr "Mai-Star Spiele"
#: src/events/templates/events/event_detail.html:57 #: .\events\templates\events\event_detail.html:57
msgid "Event Ranking" msgid "Event Ranking"
msgstr "Veranstaltungs Wertung" msgstr "Veranstaltungs Wertung"
#: src/events/templates/events/event_detail.html:100 #: .\events\templates\events\event_detail.html:100
msgid "Share on Facebook" msgid "Share on Facebook"
msgstr "Auf Facebook teilen" msgstr "Auf Facebook teilen"
#: src/events/templates/events/event_detail.html:104 #: .\events\templates\events\event_detail.html:104
msgid "Share on Google+" msgid "Share on Google+"
msgstr "Auf Google+ teilen" msgstr "Auf Google+ teilen"
#: src/events/templates/events/event_detail.html:109 #: .\events\templates\events\event_detail.html:109
msgid "Share on Twitter" msgid "Share on Twitter"
msgstr "Auf Twitter teilen" msgstr "Auf Twitter teilen"
#: src/events/templates/events/event_detail.html:113 #: .\events\templates\events\event_detail.html:113
msgid "Show on Google Maps" msgid "Show on Google Maps"
msgstr "Auf Google Maps zeigen" msgstr "Auf Google Maps zeigen"
#: src/events/templates/events/event_detail.html:127 #: .\events\templates\events\event_detail.html:127
#: src/events/templates/events/event_form.html:9 src/events/views.py:62 #: .\events\templates\events\event_form.html:9 .\events\views.py:62
msgid "Edit Event" msgid "Edit Event"
msgstr "Termin bearbeiten" msgstr "Termin bearbeiten"
#: src/events/templates/events/event_detail.html:131 #: .\events\templates\events\event_detail.html:131
msgid "Add Dates" msgid "Add Dates"
msgstr "Termine hinzufügen" msgstr "Termine hinzufügen"
#: src/events/templates/events/event_form.html:9 #: .\events\templates\events\event_form.html:9
#: src/events/templates/events/page.html:9 src/events/views.py:64 #: .\events\templates\events\page.html:9 .\events\views.py:64
msgid "Add Event" msgid "Add Event"
msgstr "Neuer Termin" msgstr "Neuer Termin"
#: src/events/templates/events/event_form.html:18 #: .\events\templates\events\event_form.html:18
#: src/events/templates/events/photo_list.html:35 #: .\events\templates\events\photo_list.html:35
msgid "reset" msgid "reset"
msgstr "Zurücksetzen" msgstr "Zurücksetzen"
#: src/events/templates/events/event_form.html:19 #: .\events\templates\events\event_form.html:19
#: src/events/templates/events/eventseries_form.html:25 #: .\events\templates\events\eventseries_form.html:25
msgid "save" msgid "save"
msgstr "Speichern" msgstr "Speichern"
#: src/events/templates/events/event_list.html:4 #: .\events\templates\events\event_list.html:4
#: src/events/templates/events/event_list.html:5 #: .\events\templates\events\event_list.html:5
msgid "Upcoming Events" msgid "Upcoming Events"
msgstr "Bevorstehende Veranstaltungen" msgstr "Bevorstehende Veranstaltungen"
#: src/events/templates/events/eventseries_form.html:24 #: .\events\templates\events\eventseries_form.html:24
msgid "back" msgid "back"
msgstr "Zurück" msgstr "Zurück"
#: src/events/templates/events/photo_confirm_delete.html:17 #: .\events\templates\events\photo_confirm_delete.html:17
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
#: src/events/templates/events/photo_confirm_delete.html:21 #: .\events\templates\events\photo_confirm_delete.html:21
#: src/events/templates/events/photo_list.html:21 #: .\events\templates\events\photo_list.html:21
msgid "Delete" msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
#: src/events/templates/events/photo_detail.html:44 #: .\events\templates\events\photo_detail.html:44
msgid "previous" msgid "previous"
msgstr "Zurück" msgstr "Zurück"
#: src/events/templates/events/photo_detail.html:52 #: .\events\templates\events\photo_detail.html:52
msgid "Photographer" msgid "Photographer"
msgstr "Fotograf" msgstr "Fotograf"
#: src/events/templates/events/photo_detail.html:58 #: .\events\templates\events\photo_detail.html:58
msgid "share on" msgid "share on"
msgstr "Teile auf" msgstr "Teile auf"
#: src/events/templates/events/photo_detail.html:81 #: .\events\templates\events\photo_detail.html:81
msgid "download" msgid "download"
msgstr "Herunterladen" msgstr "Herunterladen"
#: src/events/templates/events/photo_detail.html:82 #: .\events\templates\events\photo_detail.html:82
msgid "Rotate counter clockwise" msgid "Rotate counter clockwise"
msgstr "mit dem Uhrzeiger drehen" msgstr "mit dem Uhrzeiger drehen"
#: src/events/templates/events/photo_detail.html:83 #: .\events\templates\events\photo_detail.html:83
msgid "Rotate clockwise" msgid "Rotate clockwise"
msgstr "gegen den Uhrzeiger drehen" msgstr "gegen den Uhrzeiger drehen"
#: src/events/templates/events/photo_detail.html:84 #: .\events\templates\events\photo_detail.html:84
msgid "Save" msgid "Save"
msgstr "Speichern" msgstr "Speichern"
#: src/events/templates/events/photo_list.html:36 #: .\events\templates\events\photo_list.html:36
#: src/events/templates/events/photo_upload.html:35 #: .\events\templates\events\photo_upload.html:35
#: src/events/templates/events/photo_upload.html:49 #: .\events\templates\events\photo_upload.html:49
msgid "Upload" msgid "Upload"
msgstr "Hochladen" msgstr "Hochladen"
#: src/events/views.py:149 #: .\events\views.py:150
msgid "Event does not exist" msgid "Event does not exist"
msgstr "Veranstaltung gibt es nicht" msgstr "Veranstaltung gibt es nicht"

View File

@@ -80,7 +80,8 @@ class EventGallery(generic.ListView):
event_series__isnull=True, event_series__isnull=True,
photo_count__gt=0 photo_count__gt=0
) )
paginate_by = 12 queryset = queryset.order_by('-start')
paginate_by = 24
class EventListIcal(generic.View): class EventListIcal(generic.View):

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kasu.utils\n" "Project-Id-Version: kasu.utils\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-11 22:50+0100\n" "POT-Creation-Date: 2018-05-08 00:17+0200\n"
"PO-Revision-Date: 2016-09-28 00:24+0200\n" "PO-Revision-Date: 2016-09-28 00:24+0200\n"
"Last-Translator: Christian Berg <xeniac.at@gmail.com>\n" "Last-Translator: Christian Berg <xeniac.at@gmail.com>\n"
"Language-Team: Kasu <verein@kasu.at>\n" "Language-Team: Kasu <verein@kasu.at>\n"
@@ -19,175 +19,163 @@ msgstr ""
"X-Generator: Poedit 1.8.9\n" "X-Generator: Poedit 1.8.9\n"
"X-Translated-Using: django-rosetta 0.7.6\n" "X-Translated-Using: django-rosetta 0.7.6\n"
#: src/kasu/settings.py:158 #: .\kasu\settings.py:141
msgid "German" msgid "German"
msgstr "Deutsch" msgstr "Deutsch"
#: src/kasu/settings.py:158 #: .\kasu\settings.py:141
msgid "English" msgid "English"
msgstr "Englisch" msgstr "Englisch"
#: src/kasu/templates/404.html:8 #: .\kasu\templates\404.html:8
msgid "The page your requested does not exist on this server." msgid "The page your requested does not exist on this server."
msgstr "Die angeforderte Seite existiert auf diesem Server nicht." msgstr "Die angeforderte Seite existiert auf diesem Server nicht."
#: src/kasu/templates/base.html:22 #: .\kasu\templates\base.html:22
msgid "Current News" msgid "Current News"
msgstr "Aktuelle Neuigkeiten" msgstr "Aktuelle Neuigkeiten"
#: src/kasu/templates/base.html:24 src/kasu/templates/index.html:40 #: .\kasu\templates\base.html:24 .\kasu\templates\index.html:40
msgid "Recent Comments" msgid "Recent Comments"
msgstr "Kürzliche Kommentare" msgstr "Kürzliche Kommentare"
#: src/kasu/templates/base.html:45 #: .\kasu\templates\base.html:45
msgid "Menu" msgid "Menu"
msgstr "Menü" msgstr "Menü"
#: src/kasu/templates/base.html:69 #: .\kasu\templates\base.html:69
msgid "Current Event" msgid "Current Event"
msgstr "Aktuelle Veranstaltung" msgstr "Aktuelle Veranstaltung"
#: src/kasu/templates/base.html:72 #: .\kasu\templates\base.html:72
msgid "Since" msgid "Since"
msgstr "seit" msgstr "seit"
#: src/kasu/templates/base.html:73 src/kasu/templates/base.html:85 #: .\kasu\templates\base.html:73 .\kasu\templates\base.html:87
msgid "Start" msgid "Start"
msgstr "Beginn" msgstr "Beginn"
#: src/kasu/templates/base.html:76 src/kasu/templates/base.html:88 #: .\kasu\templates\base.html:76 .\kasu\templates\base.html:90
msgid "Location" msgid "Location"
msgstr "Ort" msgstr "Ort"
#: src/kasu/templates/base.html:79 src/kasu/templates/base.html:90 #: .\kasu\templates\base.html:81 .\kasu\templates\base.html:94
msgid "More Details" msgid "More Details"
msgstr "Mehr Details" msgstr "Mehr Details"
#: src/kasu/templates/base.html:81 #: .\kasu\templates\base.html:83
msgid "Next Event" msgid "Next Event"
msgstr "Nächste Veranstaltung" msgstr "Nächste Veranstaltung"
#: src/kasu/templates/base.html:84 #: .\kasu\templates\base.html:86
msgid "in" msgid "in"
msgstr "in" msgstr "in"
#: src/kasu/templates/base.html:93 #: .\kasu\templates\base.html:97
msgid "Upcoming events" msgid "Upcoming events"
msgstr "Bevorstehende Veranstaltungen" msgstr "Bevorstehende Veranstaltungen"
#: src/kasu/templates/base.html:143 #: .\kasu\templates\base.html:147
msgid "Add Subpage" msgid "Add Subpage"
msgstr "Unterseite Hinzufügen" msgstr "Unterseite Hinzufügen"
#: src/kasu/templates/base.html:148 #: .\kasu\templates\base.html:152
msgid "Edit Page" msgid "Edit Page"
msgstr "Seite bearbeiten" msgstr "Seite bearbeiten"
#: src/kasu/templates/base.html:156 #: .\kasu\templates\base.html:160
msgid "Imprint" msgid "Imprint"
msgstr "Impressum" msgstr "Impressum"
#: src/kasu/templates/base.html:157 #: .\kasu\templates\base.html:161
msgid "contact" msgid "contact"
msgstr "Kontakt" msgstr "Kontakt"
#: src/kasu/templates/base.html:162 #: .\kasu\templates\base.html:166
msgid "Language" msgid "Language"
msgstr "Sprache" msgstr "Sprache"
#: src/kasu/templates/base.html:171 #: .\kasu\templates\base.html:175
msgid "Go" msgid "Go"
msgstr "Los" msgstr "Los"
#: src/kasu/templates/base.html:176 #: .\kasu\templates\base.html:180
msgid "Logged in as" msgid "Logged in as"
msgstr "Angemeldet als" msgstr "Angemeldet als"
#: src/kasu/templates/base.html:178 #: .\kasu\templates\base.html:182
msgid "Admin" msgid "Admin"
msgstr "Admin" msgstr "Admin"
#: src/kasu/templates/base.html:179 #: .\kasu\templates\base.html:183
msgid "Logout" msgid "Logout"
msgstr "Abmelden" msgstr "Abmelden"
#: src/kasu/templates/base.html:181 #: .\kasu\templates\base.html:185
msgid "no user logged in" msgid "no user logged in"
msgstr "Niemand angemeldet" msgstr "Niemand angemeldet"
#: src/kasu/templates/base.html:182 src/kasu/templates/comments/form.html:43 #: .\kasu\templates\base.html:186 .\kasu\templates\comments\form.html:43
msgid "register" msgid "register"
msgstr "Registrieren" msgstr "Registrieren"
#: src/kasu/templates/base.html:183 src/kasu/templates/comments/form.html:44 #: .\kasu\templates\base.html:187 .\kasu\templates\comments\form.html:44
msgid "login" msgid "login"
msgstr "anmelden" msgstr "anmelden"
#: src/kasu/templates/base.html:185 #: .\kasu\templates\comments\form.html:5
msgid "Login with Facebook"
msgstr "über Facebook anmelden"
#: src/kasu/templates/base.html:187
msgid "Login with Twitter"
msgstr "über Twitter anmelden"
#: src/kasu/templates/base.html:189
msgid "Login with Google"
msgstr "über Google anmelden"
#: src/kasu/templates/comments/form.html:5
msgid "New Comment" msgid "New Comment"
msgstr "Neuer Kommentar" msgstr "Neuer Kommentar"
#: src/kasu/templates/comments/form.html:20 #: .\kasu\templates\comments\form.html:20
msgid "now" msgid "now"
msgstr "Jetzt" msgstr "Jetzt"
#: src/kasu/templates/comments/form.html:25 #: .\kasu\templates\comments\form.html:25
msgid "Preview" msgid "Preview"
msgstr "Vorschau" msgstr "Vorschau"
#: src/kasu/templates/comments/form.html:26 #: .\kasu\templates\comments\form.html:26
msgid "Post" msgid "Post"
msgstr "Schreiben" msgstr "Schreiben"
#: src/kasu/templates/comments/form.html:34 #: .\kasu\templates\comments\form.html:34
msgid "not logged in" msgid "not logged in"
msgstr "Nicht angemeldet" msgstr "Nicht angemeldet"
#: src/kasu/templates/comments/form.html:38 #: .\kasu\templates\comments\form.html:38
msgid "Register now, or Login to leave a comment here." msgid "Register now, or Login to leave a comment here."
msgstr "Jetzt registrieren, oder anmelden um einen Kommentar zu schreiben." msgstr "Jetzt registrieren, oder anmelden um einen Kommentar zu schreiben."
#: src/kasu/templates/comments/list.html:2 src/kasu/templates/index.html:25 #: .\kasu\templates\comments\list.html:2 .\kasu\templates\index.html:25
msgid "Comments" msgid "Comments"
msgstr "Kommentare" msgstr "Kommentare"
#: src/kasu/templates/comments/posted.html:4 #: .\kasu\templates\comments\posted.html:4
#: src/kasu/templates/comments/posted.html:7 #: .\kasu\templates\comments\posted.html:7
msgid "Thank you for your comment" msgid "Thank you for your comment"
msgstr "Danke für deinen Kommentar." msgstr "Danke für deinen Kommentar."
#: src/kasu/templates/comments/preview.html:4 #: .\kasu\templates\comments\preview.html:4
#: src/kasu/templates/comments/preview.html:6 #: .\kasu\templates\comments\preview.html:6
msgid "Preview your comment" msgid "Preview your comment"
msgstr "Vorschau deines Kommentars" msgstr "Vorschau deines Kommentars"
#: src/kasu/templates/comments/preview.html:10 #: .\kasu\templates\comments\preview.html:10
msgid "Please correct the error below" msgid "Please correct the error below"
msgid_plural "Please correct the errors below" msgid_plural "Please correct the errors below"
msgstr[0] "Bitte den Fehler weiter unten beheben" msgstr[0] "Bitte den Fehler weiter unten beheben"
msgstr[1] "Bitte die Fehler weiter unten beheben" msgstr[1] "Bitte die Fehler weiter unten beheben"
#: src/kasu/templates/index.html:4 #: .\kasu\templates\index.html:4
msgid "traditional Asian game culture" msgid "traditional Asian game culture"
msgstr "traditionelle asiatische Spielkultur" msgstr "traditionelle asiatische Spielkultur"
#: src/kasu/templates/index.html:33 #: .\kasu\templates\index.html:33
msgid "Read More" msgid "Read More"
msgstr "Mehr lesen" msgstr "Mehr lesen"
#: src/kasu/templates/index.html:47 #: .\kasu\templates\index.html:47
#, python-format #, python-format
msgid "" msgid ""
"\n" "\n"
@@ -204,26 +192,35 @@ msgstr ""
" <time datetime=\"%(submit_date)s\">%(since)s</time>\n" " <time datetime=\"%(submit_date)s\">%(since)s</time>\n"
" " " "
#: src/kasu/templates/index.html:59 #: .\kasu\templates\index.html:59
msgid "Kasu in the social network" msgid "Kasu in the social network"
msgstr "Kasu im sozialem Netzwerk" msgstr "Kasu im sozialem Netzwerk"
#: src/kasu/templates/index.html:62 src/kasu/templates/index.html:65 #: .\kasu\templates\index.html:62 .\kasu\templates\index.html:65
msgid "Visit us on" msgid "Visit us on"
msgstr "Besuche uns auf" msgstr "Besuche uns auf"
#: src/kasu/templates/index.html:74 #: .\kasu\templates\index.html:74
msgid "Add Article" msgid "Add Article"
msgstr "Artikel hinzufügen" msgstr "Artikel hinzufügen"
#: src/kasu/templates/paginator.html:8 #: .\kasu\templates\paginator.html:8
msgid "Previous" msgid "Previous"
msgstr "Vorherige" msgstr "Vorherige"
#: src/kasu/templates/paginator.html:20 #: .\kasu\templates\paginator.html:20
msgid "Next" msgid "Next"
msgstr "Nächste" msgstr "Nächste"
#~ msgid "Login with Facebook"
#~ msgstr "über Facebook anmelden"
#~ msgid "Login with Twitter"
#~ msgstr "über Twitter anmelden"
#~ msgid "Login with Google"
#~ msgstr "über Google anmelden"
#~ msgid "United Kingdom" #~ msgid "United Kingdom"
#~ msgstr "Vereinigtes Königreich" #~ msgstr "Vereinigtes Königreich"

View File

@@ -49,7 +49,6 @@ PREREQ_APPS = [
'ckeditor', 'ckeditor',
'ckeditor_uploader', 'ckeditor_uploader',
'easy_thumbnails', 'easy_thumbnails',
'social_django',
] ]
PROJECT_APPS = [ PROJECT_APPS = [
'kasu', 'kasu',
@@ -103,8 +102,6 @@ TEMPLATES = [
'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages',
'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages',
'events.context_processors.events_overview', 'events.context_processors.events_overview',
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect'
], ],
'loaders': [ 'loaders': [
('django.template.loaders.cached.Loader', [ ('django.template.loaders.cached.Loader', [
@@ -132,24 +129,10 @@ DEFAULT_FROM_EMAIL = ""
# Login Settings # Login Settings
ACCOUNT_ACTIVATION_DAYS = 5 ACCOUNT_ACTIVATION_DAYS = 5
AUTH_USER_MODEL = 'membership.Membership' AUTH_USER_MODEL = 'membership.Membership'
AUTHENTICATION_BACKENDS = ('social_core.backends.facebook.FacebookOAuth2', AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
'social_core.backends.google.GoogleOAuth2',
'social_core.backends.twitter.TwitterOAuth',
'django.contrib.auth.backends.ModelBackend',)
LOGIN_URL = '/membership/login/' LOGIN_URL = '/membership/login/'
LOGIN_ERROR_URL = '/membership/login/error/' LOGIN_ERROR_URL = '/membership/login/error/'
LOGIN_REDIRECT_URL = '/users/' LOGIN_REDIRECT_URL = '/users/'
SOCIAL_AUTH_CHANGE_SIGNAL_ONLY = False
SOCIAL_AUTH_ENABLED_BACKENDS = ('facebook-oauth2', 'google-oauth2', 'twitter')
SOCIAL_AUTH_NEW_USER_REDIRECT_URL = '/users/'
SOCIAL_AUTH_SLUGIFY_USERNAMES = True
SOCIAL_AUTH_FACEBOOK_KEY = ''
SOCIAL_AUTH_FACEBOOK_SECRET = ''
SOCIAL_AUTH_FACEBOOK_SCOPE = ['user_about_me', 'email']
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = ''
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = ''
SOCIAL_AUTH_TWITTER_KEY = ''
SOCIAL_AUTH_TWITTER_SECRET = ''
# Localization # Localization
USE_I18N = True USE_I18N = True

View File

@@ -4,9 +4,11 @@
_paq.push(['trackPageView']); _paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']); _paq.push(['enableLinkTracking']);
(function() { (function() {
var u="//kasu.at/piwik/"; var u="/piwik/";
_paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['setSiteId', '1']); _paq.push(['setSiteId', '1']);
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})(); })();

View File

@@ -73,7 +73,9 @@
<li><span class="fa-li fa fa-calendar"></span><strong>{% trans "Start" %}:</strong> <li><span class="fa-li fa fa-calendar"></span><strong>{% trans "Start" %}:</strong>
<time datetime="{{current_event.start|date:'c'}}">{{current_event.start|date:'DATETIME_FORMAT'}}</time> <time datetime="{{current_event.start|date:'c'}}">{{current_event.start|date:'DATETIME_FORMAT'}}</time>
</li> </li>
<li><span class="fa-li fa fa-map-marker"></span><strong>{% trans "Location" %}:</strong> {{ current_event.location }}</li> <li><span class="fa-li fa fa-map-marker"></span><strong>{% trans "Location" %}:</strong> {{ current_event.location }}
- {{current_event.location.street_address}}, {{current_event.location.postal_code}} {{current_event.location.locality}}
</li>
</ul> </ul>
<div class="right"><a class="button" href="{{current_event.get_absolute_url}}"> <div class="right"><a class="button" href="{{current_event.get_absolute_url}}">
{% trans "More Details" %} <span class="fa fa-arrow-right"></span></a></div> {% trans "More Details" %} <span class="fa fa-arrow-right"></span></a></div>
@@ -85,7 +87,9 @@
<li><span class="fa-li fa fa-calendar"></span><strong>{% trans "Start" %}:</strong> <li><span class="fa-li fa fa-calendar"></span><strong>{% trans "Start" %}:</strong>
<time datetime="{{next_event.start|date:'c'}}">{{next_event.start|date:'DATETIME_FORMAT' }}</time> <time datetime="{{next_event.start|date:'c'}}">{{next_event.start|date:'DATETIME_FORMAT' }}</time>
</li> </li>
<li><span class="fa-li fa fa-map-marker"></span><strong>{% trans "Location" %}:</strong> {{ next_event.location }}</li> <li><span class="fa-li fa fa-map-marker"></span><strong>{% trans "Location" %}:</strong> {{ next_event.location }}
- {{next_event.location.street_address}}, {{next_event.location.postal_code}} {{next_event.location.locality}}
</li>
</ul> </ul>
<div class="right"><a class="button" href="{{next_event.get_absolute_url}}">{% trans "More Details" %} <div class="right"><a class="button" href="{{next_event.get_absolute_url}}">{% trans "More Details" %}
<span class="fa fa-arrow-right"></span></a></div> <span class="fa fa-arrow-right"></span></a></div>
@@ -181,12 +185,6 @@
{% trans "no user logged in" %} - {% trans "no user logged in" %} -
<a rel="nofollow" href="{% url 'membership-register' %}">{% trans "register" %}</a> <a rel="nofollow" href="{% url 'membership-register' %}">{% trans "register" %}</a>
<a rel="nofollow" href="{% url 'login' %}?next={{ request.path_info }}">{% trans "login" %}</a> <a rel="nofollow" href="{% url 'login' %}?next={{ request.path_info }}">{% trans "login" %}</a>
<a rel="nofollow" href="{% url 'social:begin' 'facebook' %}" class="fa fa-facebook"
title="{% trans 'Login with Facebook' %}" aria-label="{% trans 'Login with Facebook' %}"></a>
<a rel="nofollow" href="{% url 'social:begin' 'twitter' %}" class="fa fa-twitter"
title="{% trans 'Login with Twitter' %}" aria-label="{% trans 'Login with Twitter' %}"></a>
<a rel="nofollow" href="{% url 'social:begin' 'google-oauth2' %}" class="fa fa-google"
title="{% trans 'Login with Google' %}" aria-label="{% trans 'Login with Google' %}"></a>
{% endif %} {% endif %}
</nav> </nav>
</body> </body>

View File

@@ -5,8 +5,8 @@
<label {% if field.html_name != 'recaptcha' %} for="id_{{ field.html_name}}" {% endif %} <label {% if field.html_name != 'recaptcha' %} for="id_{{ field.html_name}}" {% endif %}
class="field_name {{ field.css_classes }}">{{ field.label}}</label> class="field_name {{ field.css_classes }}">{{ field.label}}</label>
{{ field }} {{ field }}
{% if field.help_text and not field.field.widget.input_type %} {% if field.field.widget.input_type == 'checkbox' %}
{{field.help_text}} <label for="id_{{field.name}}">{{field.help_text|safe}}</label>
{% elif field.help_text %} {% elif field.help_text %}
<p class="help_text">{{field.help_text}}</p> <p class="help_text">{{field.help_text}}</p>
{% endif %} {% endif %}

View File

@@ -62,7 +62,6 @@ urlpatterns = [ # Ignore PyLintBear (C0103)
url(r'^(?P<path>[\-\d\w\/]+)\.html$', url(r'^(?P<path>[\-\d\w\/]+)\.html$',
views.PageHtml.as_view(), name='view-page'), views.PageHtml.as_view(), name='view-page'),
url(r'^(?P<path>[\-\d\w\/]+)\.pdf$', views.PagePdf.as_view()), url(r'^(?P<path>[\-\d\w\/]+)\.pdf$', views.PagePdf.as_view()),
url('', include('social_django.urls', namespace='social'))
] ]
if settings.DEBUG: if settings.DEBUG:

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kasu.mahjong_ranking\n" "Project-Id-Version: kasu.mahjong_ranking\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-11 22:50+0100\n" "POT-Creation-Date: 2018-05-08 00:17+0200\n"
"PO-Revision-Date: 2018-01-12 15:23+0105\n" "PO-Revision-Date: 2018-05-08 00:20+0105\n"
"Last-Translator: b'Christian Berg <kasu@xendynastie.at>'\n" "Last-Translator: b'Christian Berg <kasu@xendynastie.at>'\n"
"Language-Team: Kasu <verein@kasu.at>\n" "Language-Team: Kasu <verein@kasu.at>\n"
"Language: de\n" "Language: de\n"
@@ -17,387 +17,390 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.8.9\n" "X-Generator: Poedit 1.8.9\n"
"X-Translated-Using: django-rosetta 0.7.14\n" "X-Translated-Using: django-rosetta 0.8.1\n"
#: src/mahjong_ranking/admin.py:24 #: .\mahjong_ranking\admin.py:24
msgid "Recalculate" msgid "Recalculate"
msgstr "Neuberechnen" msgstr "Neuberechnen"
#: src/mahjong_ranking/admin.py:34 #: .\mahjong_ranking\admin.py:34
msgid "Confirm" msgid "Confirm"
msgstr "Bestätigen" msgstr "Bestätigen"
#: src/mahjong_ranking/admin.py:44 #: .\mahjong_ranking\admin.py:44
msgid "Set unconfirmed" msgid "Set unconfirmed"
msgstr "Als unbestätigt markieren" msgstr "Als unbestätigt markieren"
#: src/mahjong_ranking/forms.py:22 #: .\mahjong_ranking\forms.py:22
msgid "start" msgid "start"
msgstr "Beginn" msgstr "Beginn"
#: src/mahjong_ranking/models.py:91 #: .\mahjong_ranking\models.py:91
#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:14 #: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:14
#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:13 #: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:13
#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:15 #: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:15
#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:15 #: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:15
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:10 #: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:10
msgid "Start" msgid "Start"
msgstr "Beginn" msgstr "Beginn"
#: src/mahjong_ranking/models.py:92 #: .\mahjong_ranking\models.py:92
msgid "This is crucial to get the right Hanchans that scores" msgid "This is crucial to get the right Hanchans that scores"
msgstr "Wichtig damit die richtigen Hanchans in die Wertung kommen." msgstr "Wichtig damit die richtigen Hanchans in die Wertung kommen."
#: src/mahjong_ranking/models.py:99 #: .\mahjong_ranking\models.py:99
msgid "Player 1" msgid "Player 1"
msgstr "Spieler 1" msgstr "Spieler 1"
#: src/mahjong_ranking/models.py:100 src/mahjong_ranking/models.py:102 #: .\mahjong_ranking\models.py:100 .\mahjong_ranking\models.py:102
#: src/mahjong_ranking/models.py:119 src/mahjong_ranking/models.py:121 #: .\mahjong_ranking\models.py:119 .\mahjong_ranking\models.py:121
#: src/mahjong_ranking/models.py:138 src/mahjong_ranking/models.py:140 #: .\mahjong_ranking\models.py:138 .\mahjong_ranking\models.py:140
#: src/mahjong_ranking/models.py:157 src/mahjong_ranking/models.py:159 #: .\mahjong_ranking\models.py:157 .\mahjong_ranking\models.py:159
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:19 #: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:19
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:21 #: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:21
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:16 #: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:16
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:19 #: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:19
#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:35 #: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:30
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:32 #: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:31
msgid "Score" msgid "Score"
msgstr "Punkte" msgstr "Punkte"
#: src/mahjong_ranking/models.py:112 src/mahjong_ranking/models.py:131 #: .\mahjong_ranking\models.py:112 .\mahjong_ranking\models.py:131
#: src/mahjong_ranking/models.py:150 src/mahjong_ranking/models.py:169 #: .\mahjong_ranking\models.py:150 .\mahjong_ranking\models.py:169
#: src/mahjong_ranking/models.py:171 #: .\mahjong_ranking\models.py:171
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:20 #: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:20
#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:18 #: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:18
#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:17 #: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:17
msgid "Comment" msgid "Comment"
msgstr "Kommentar" msgstr "Kommentar"
#: src/mahjong_ranking/models.py:118 #: .\mahjong_ranking\models.py:118
msgid "Player 2" msgid "Player 2"
msgstr "Spieler 2" msgstr "Spieler 2"
#: src/mahjong_ranking/models.py:137 #: .\mahjong_ranking\models.py:137
msgid "Player 3" msgid "Player 3"
msgstr "Spieler 3" msgstr "Spieler 3"
#: src/mahjong_ranking/models.py:156 #: .\mahjong_ranking\models.py:156
msgid "Player 4" msgid "Player 4"
msgstr "Spieler 4" msgstr "Spieler 4"
#: src/mahjong_ranking/models.py:173 #: .\mahjong_ranking\models.py:173
msgid "Has been Confirmed" msgid "Has been Confirmed"
msgstr "Wurde bestätigt" msgstr "Wurde bestätigt"
#: src/mahjong_ranking/models.py:174 #: .\mahjong_ranking\models.py:174
msgid "Only valid and confirmed Hanchans will be counted in the rating." msgid "Only valid and confirmed Hanchans will be counted in the rating."
msgstr "Nur gültige und bestätigte Hanchans kommen in die Wertung." msgstr "Nur gültige und bestätigte Hanchans kommen in die Wertung."
#: src/mahjong_ranking/models.py:179 src/mahjong_ranking/models.py:607 #: .\mahjong_ranking\models.py:179 .\mahjong_ranking\models.py:607
#: src/mahjong_ranking/templates/mahjong_ranking/ladder_redbox.html:29 #: .\mahjong_ranking\templates\mahjong_ranking\ladder_redbox.html:29
#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:63 #: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:63
msgid "Season" msgid "Season"
msgstr "Saison" msgstr "Saison"
#: src/mahjong_ranking/models.py:184 #: .\mahjong_ranking\models.py:184
msgid "Hanchan" msgid "Hanchan"
msgstr "Hanchan" msgstr "Hanchan"
#: src/mahjong_ranking/models.py:185 #: .\mahjong_ranking\models.py:185
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:17 #: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:17
msgid "Hanchans" msgid "Hanchans"
msgstr "Hanchans" msgstr "Hanchans"
#: src/mahjong_ranking/models.py:188 #: .\mahjong_ranking\models.py:188
msgid "Hanchan from {0:%Y-%m-%d} at {0:%H:%M} with {1}" msgid "Hanchan from {0:%Y-%m-%d} at {0:%H:%M} with {1}"
msgstr "Hanchan vom {0:%Y-%m-%d} um {0:%H:%M} mit {1}" msgstr "Hanchan vom {0:%Y-%m-%d} um {0:%H:%M} mit {1}"
#: src/mahjong_ranking/models.py:215 #: .\mahjong_ranking\models.py:215
#, python-format #, python-format
msgid "%s can't attend the same game multiple times" msgid "%s can't attend the same game multiple times"
msgstr "%s kann an einem Spiel nicht mehrfach teilnehmen." msgstr "%s kann an einem Spiel nicht mehrfach teilnehmen."
#: src/mahjong_ranking/models.py:223 #: .\mahjong_ranking\models.py:223
msgid "Games in the future may not be added, Dr. Brown" msgid "Games in the future may not be added, Dr. Brown"
msgstr "Spiele aus der Zukunft dürfen noch nicht erfasst werden. Dr. Brown." msgstr "Spiele aus der Zukunft dürfen noch nicht erfasst werden. Dr. Brown."
#: src/mahjong_ranking/models.py:225 #: .\mahjong_ranking\models.py:225
msgid "Only games during the event are allowed" msgid "Only games during the event are allowed"
msgstr "Nur Spiele während der Veranstaltung zählen." msgstr "Nur Spiele während der Veranstaltung zählen."
#: src/mahjong_ranking/models.py:228 #: .\mahjong_ranking\models.py:228
msgid "Gamescore is lower then 100.000 Pt." msgid "Gamescore is lower then 100.000 Pt."
msgstr "Spielstand ist weniger als 100.000 Punkte" msgstr "Spielstand ist weniger als 100.000 Punkte"
#: src/mahjong_ranking/models.py:230 #: .\mahjong_ranking\models.py:230
msgid "Gamescore is over 100.000 Pt." msgid "Gamescore is over 100.000 Pt."
msgstr "Spielstand ist über 100.000 Punkte." msgstr "Spielstand ist über 100.000 Punkte."
#: src/mahjong_ranking/models.py:362 #: .\mahjong_ranking\models.py:362
msgid "Kyū/Dan Ranking" msgid "Kyū/Dan Ranking"
msgstr "Kyū/Dan Wertung" msgstr "Kyū/Dan Wertung"
#: src/mahjong_ranking/models.py:363 #: .\mahjong_ranking\models.py:363
msgid "Kyū/Dan Rankings" msgid "Kyū/Dan Rankings"
msgstr "Kyū/Dan Wertungen" msgstr "Kyū/Dan Wertungen"
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_form.html:11 #: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:11
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:55 #: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:55
#| msgid "Edit Hanchan"
msgid "Edit Hanchans" msgid "Edit Hanchans"
msgstr "Hanchans bearbeiten" msgstr "Hanchans bearbeiten"
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_form.html:82 #: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:49
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:56 #: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:58
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:52
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:4
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:14
msgid "Add Hanchan"
msgstr "Hanchan hinzufügen"
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_form.html:84
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:37
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:4
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:33
#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:44
#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:33
#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:41
#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:52
msgid "Delete Hanchan"
msgstr "Hanchan löschen"
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_form.html:94
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:71
msgid "back"
msgstr "Zurück"
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_form.html:95
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:72
msgid "save"
msgstr "Speichern"
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:7
msgid "Played Hanchans"
msgstr "Gespielte Hanchans"
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:18
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:15
msgid "Place"
msgstr "Platz"
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:21
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:18
#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:17
msgid "Dan Points"
msgstr "Dan Punkte"
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:23
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:20
#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:16
#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:18
msgid "Kyu Points"
msgstr "Kyu Punkte"
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:43
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:4
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:14
#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:47
#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:36
#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:44
#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:55
msgid "Edit Hanchan"
msgstr "Hanchan bearbeiten"
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:48
msgid "No Hanchan has been added to this event yet."
msgstr "Für diese Veranstaltung wurde noch keine Hanchan eingetragen."
#: src/mahjong_ranking/templates/mahjong_ranking/eventhanchan_list.html:54
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:51
msgid "Edit Event"
msgstr "Veranstaltung bearbeiten"
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:4
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:5
msgid "Tournament Ranking"
msgstr "Turnierwertung"
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:12
#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:30
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:23
msgid "Rank"
msgstr "Rang"
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:13
#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:17
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:24
msgid "Avatar"
msgstr "Avatar"
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:14
#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:20
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:25
msgid "Nickname"
msgstr "Spitzname"
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:15
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:26
msgid "Name"
msgstr "Name"
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:16
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:27
msgid "Average"
msgstr "Durchschnitt"
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:20
#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:15
#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:15
#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:16
#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:16
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:31
msgid "Placement"
msgstr "Platzierung"
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:22
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:33
msgid "count"
msgstr "Anzahl"
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:23
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:34
msgid "good"
msgstr "gut"
#: src/mahjong_ranking/templates/mahjong_ranking/eventranking_list.html:24
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:35
msgid "won"
msgstr "gewonnen"
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:39
msgid "Cancel"
msgstr "Abbruch"
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_confirm_delete.html:40
msgid "Delete"
msgstr "Löschen"
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:18
msgid "Player"
msgstr "Spieler"
#: src/mahjong_ranking/templates/mahjong_ranking/hanchan_form.html:58
msgid "Total" msgid "Total"
msgstr "Total" msgstr "Total"
#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:4 #: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:51
#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:9 msgid "Difference"
msgid "Player List" msgstr "Unterschied"
msgstr "Spieler Liste"
#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:25 #: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:103
msgid "Full Name" #: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:56
msgstr "Voller Name" #: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:52
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:4
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:14
msgid "Add Hanchan"
msgstr "Hanchan hinzufügen"
#: src/mahjong_ranking/templates/mahjong_ranking/kyudanranking_list.html:40 #: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:105
#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:37
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:4
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:33
#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:44
#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:33
#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:41
#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:52
msgid "Delete Hanchan"
msgstr "Hanchan löschen"
#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:118
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:71
msgid "back"
msgstr "Zurück"
#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_form.html:119
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:72
msgid "save"
msgstr "Speichern"
#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:7
msgid "Played Hanchans"
msgstr "Gespielte Hanchans"
#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:18
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:15
msgid "Place"
msgstr "Platz"
#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:21
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:18
#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:17
msgid "Dan Points"
msgstr "Dan Punkte"
#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:23
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:20
#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:16
#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:18
msgid "Kyu Points"
msgstr "Kyu Punkte"
#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:43
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:4
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:14
#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:47
#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:36
#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:44
#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:55
msgid "Edit Hanchan"
msgstr "Hanchan bearbeiten"
#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:48
msgid "No Hanchan has been added to this event yet."
msgstr "Für diese Veranstaltung wurde noch keine Hanchan eingetragen."
#: .\mahjong_ranking\templates\mahjong_ranking\eventhanchan_list.html:54
#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:51
msgid "Edit Event"
msgstr "Veranstaltung bearbeiten"
#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:4
#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:5
msgid "Tournament Ranking"
msgstr "Turnierwertung"
#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:12
#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:25
#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:23
msgid "Rank"
msgstr "Rang"
#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:13
#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:17
#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:24
msgid "Avatar"
msgstr "Avatar"
#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:14
#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:20
#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:25
msgid "Nickname"
msgstr "Spitzname"
#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:15
msgid "Name"
msgstr "Name"
#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:16
#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:26
msgid "Average"
msgstr "Durchschnitt"
#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:20
#: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:15
#: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:15
#: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:16
#: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:16
#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:30
msgid "Placement"
msgstr "Platzierung"
#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:22
#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:32
msgid "count"
msgstr "Anzahl"
#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:23
#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:33
msgid "good"
msgstr "gut"
#: .\mahjong_ranking\templates\mahjong_ranking\eventranking_list.html:24
#: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:34
msgid "won"
msgstr "gewonnen"
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:39
msgid "Cancel"
msgstr "Abbruch"
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_confirm_delete.html:40
msgid "Delete"
msgstr "Löschen"
#: .\mahjong_ranking\templates\mahjong_ranking\hanchan_form.html:18
msgid "Player"
msgstr "Spieler"
#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:4
#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:9
#| msgid "Player List"
msgid "Players list"
msgstr "Spielerliste"
#: .\mahjong_ranking\templates\mahjong_ranking\kyudanranking_list.html:35
msgid "Games Total" msgid "Games Total"
msgstr "Spiele total" msgstr "Spiele total"
#: src/mahjong_ranking/templates/mahjong_ranking/ladder_redbox.html:3 #: .\mahjong_ranking\templates\mahjong_ranking\ladder_redbox.html:3
msgid "Latest Hanchans" msgid "Latest Hanchans"
msgstr "Letzten Hanchans" msgstr "Letzten Hanchans"
#: src/mahjong_ranking/templates/mahjong_ranking/ladder_redbox.html:15 #: .\mahjong_ranking\templates\mahjong_ranking\ladder_redbox.html:15
msgid "Latest Events" msgid "Latest Events"
msgstr "Letzte Veranstaltungen" msgstr "Letzte Veranstaltungen"
#: src/mahjong_ranking/templates/mahjong_ranking/ladder_redbox.html:27 #: .\mahjong_ranking\templates\mahjong_ranking\ladder_redbox.html:27
msgid "Ladder Archive" msgid "Ladder Archive"
msgstr "Ladder Archiv" msgstr "Ladder Archiv"
#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:4 #: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:4
#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:5 #: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:5
msgid "Dan Score for" msgid "Dan Score for"
msgstr "Dan Wertung für" msgstr "Dan Wertung für"
#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:8 #: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:8
msgid "Hanchans that apply to the Dan Score" msgid "Hanchans that apply to the Dan Score"
msgstr "Hanchans welche zur Dan Wertung zählen" msgstr "Hanchans welche zur Dan Wertung zählen"
#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:12 #: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:12
#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:13 #: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:13
#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:13 #: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:13
msgid "Date" msgid "Date"
msgstr "Datum" msgstr "Datum"
#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:13 #: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:13
#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:12 #: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:12
#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:14 #: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:14
#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:14 #: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:14
msgid "Event" msgid "Event"
msgstr "Veranstaltung" msgstr "Veranstaltung"
#: src/mahjong_ranking/templates/mahjong_ranking/player_dan_score.html:16 #: .\mahjong_ranking\templates\mahjong_ranking\player_dan_score.html:16
#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:14 #: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:14
#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:17 #: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:17
#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:17 #: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:17
msgid "Players" msgid "Players"
msgstr "Spieler" msgstr "Spieler"
#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:4 #: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:4
#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:6 #: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:6
msgid "Unconfirmed Hanchans from" msgid "Unconfirmed Hanchans from"
msgstr "Nicht bestätigte Hanchans von" msgstr "Nicht bestätigte Hanchans von"
#: src/mahjong_ranking/templates/mahjong_ranking/player_invalid_score.html:9 #: .\mahjong_ranking\templates\mahjong_ranking\player_invalid_score.html:9
msgid "Invalid hanchans with" msgid "Invalid hanchans with"
msgstr "Ungültige Hanchans mit" msgstr "Ungültige Hanchans mit"
#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:4 #: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:4
#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:6 #: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:6
msgid "Kyu Score for" msgid "Kyu Score for"
msgstr "Kyu Wertung für" msgstr "Kyu Wertung für"
#: src/mahjong_ranking/templates/mahjong_ranking/player_kyu_score.html:9 #: .\mahjong_ranking\templates\mahjong_ranking\player_kyu_score.html:9
msgid "Hanchans that apply to the Kyu Score" msgid "Hanchans that apply to the Kyu Score"
msgstr "Hanchans welche zur Kyu Wertung zählen" msgstr "Hanchans welche zur Kyu Wertung zählen"
#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:4 #: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:4
#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:5 #: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:5
msgid "Ladder Score for" msgid "Ladder Score for"
msgstr "Ladder Wertung für" msgstr "Ladder Wertung für"
#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:8 #: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:8
msgid "Hanchans that apply to the Ladder Score" msgid "Hanchans that apply to the Ladder Score"
msgstr "Hanchans welche in der Ladder zählen" msgstr "Hanchans welche in der Ladder zählen"
#: src/mahjong_ranking/templates/mahjong_ranking/player_ladder_score.html:71 #: .\mahjong_ranking\templates\mahjong_ranking\player_ladder_score.html:71
msgid "Go" msgid "Go"
msgstr "Los" msgstr "Los"
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:11 #: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:11
msgid "End" msgid "End"
msgstr "Ende" msgstr "Ende"
#: src/mahjong_ranking/templates/mahjong_ranking/seasonranking_list.html:12 #: .\mahjong_ranking\templates\mahjong_ranking\seasonranking_list.html:12
msgid "Participants" msgid "Participants"
msgstr "Teilnehmer" msgstr "Teilnehmer"
#: src/mahjong_ranking/views.py:104 #: .\mahjong_ranking\views.py:104
#, python-format #, python-format
msgid "%s has been updated successfully." msgid "%s has been updated successfully."
msgstr "%s wurde erfolgreich aktualisiert." msgstr "%s wurde erfolgreich aktualisiert."
#: src/mahjong_ranking/views.py:107 #: .\mahjong_ranking\views.py:107
#, python-format #, python-format
msgid "%s has been added successfully. You can now add a new one." msgid "%s has been added successfully. You can now add a new one."
msgstr "%s wurde erfolgreich hinzugefügt. Du kannst eine neue eintragen." msgstr "%s wurde erfolgreich hinzugefügt. Du kannst eine neue eintragen."
#: src/mahjong_ranking/views.py:207 #: .\mahjong_ranking\views.py:207
msgid "No user found matching the name {}" msgid "No user found matching the name {}"
msgstr "Kein Benutzer mit dem Namen %s gefunden" msgstr "Kein Benutzer mit dem Namen %s gefunden"
#~ msgid "Full Name"
#~ msgstr "Voller Name"
#~ msgid "Event does not exist" #~ msgid "Event does not exist"
#~ msgstr "Veranstaltung existiert nicht" #~ msgstr "Veranstaltung existiert nicht"

View File

@@ -1,12 +1,12 @@
{% extends "mahjong_ranking/page.html" %} {% extends "mahjong_ranking/page.html" %}
{% load i18n thumbnail %} {% load i18n thumbnail %}
{% block title %}{% trans 'Player List' %}{% endblock %} {% block title %}{% trans 'Players list' %}{% endblock %}
{% block extra_head %} {% block extra_head %}
<link rel="canonical" href="{% url 'kyudanranking-list' %}?page={{page_obj.number}}" /> <link rel="canonical" href="{% url 'kyudanranking-list' %}?page={{page_obj.number}}" />
{% endblock %} {% endblock %}
{% block teaser %}<h1>{% trans 'Player List' %}</h1>{% endblock %} {% block teaser %}<h1>{% trans 'Players list' %}</h1>{% endblock %}
{% block redbox %}{% include 'mahjong_ranking/ladder_redbox.html' %}{% endblock %} {% block redbox %}{% include 'mahjong_ranking/ladder_redbox.html' %}{% endblock %}
@@ -20,11 +20,6 @@
{% trans 'Nickname' %} {% trans 'Nickname' %}
<a href="{% url 'kyudanranking-list' order_by='-username' %}?page={{page_obj.number}}" class="fa fa-sort-desc" rel="nofollow"></a> <a href="{% url 'kyudanranking-list' order_by='-username' %}?page={{page_obj.number}}" class="fa fa-sort-desc" rel="nofollow"></a>
</th> </th>
<th>
<a href="{% url 'kyudanranking-list' order_by='+full_name'%}?page={{page_obj.number}}" class="fa fa-sort-asc" rel="nofollow"></a>
{% trans 'Full Name' %}
<a href="{% url 'kyudanranking-list' order_by='-full_name' %}?page={{page_obj.number}}" class="fa fa-sort-desc" rel="nofollow"></a>
</th>
<th> <th>
<a href="{% url 'kyudanranking-list' order_by='+rank' %}?page={{page_obj.number}}" class="fa fa-sort-asc" rel="nofollow"></a> <a href="{% url 'kyudanranking-list' order_by='+rank' %}?page={{page_obj.number}}" class="fa fa-sort-asc" rel="nofollow"></a>
{% trans 'Rank' %} {% trans 'Rank' %}
@@ -51,7 +46,6 @@
width="70" height="70" alt="" /></a> width="70" height="70" alt="" /></a>
</td> </td>
<td><a href="{{ ranking.get_absolute_url }}">{{ ranking.user }}</a></td> <td><a href="{{ ranking.get_absolute_url }}">{{ ranking.user }}</a></td>
<td>{% if user.is_authenticated %}{{ranking.user.last_name}} {{ranking.user.first_name}}{% else %}---{% endif %}</td>
<td>{% if ranking.dan %} {{ranking.dan}}. Dan {% else %} {{ranking.kyu}} Kyu {% endif %}</td> <td>{% if ranking.dan %} {{ranking.dan}}. Dan {% else %} {{ranking.kyu}} Kyu {% endif %}</td>
<td class="right">{% if ranking.dan %} {{ranking.dan_points}} {% else %} {{ranking.kyu_points}} {% endif %}</td> <td class="right">{% if ranking.dan %} {{ranking.dan_points}} {% else %} {{ranking.kyu_points}} {% endif %}</td>
<td class="right">{{ranking.hanchan_count}}</td> <td class="right">{{ranking.hanchan_count}}</td>

View File

@@ -23,7 +23,6 @@
<th rowspan="2">{% trans "Rank" %}</th> <th rowspan="2">{% trans "Rank" %}</th>
<th rowspan="2">{% trans "Avatar" %}</th> <th rowspan="2">{% trans "Avatar" %}</th>
<th rowspan="2">{% trans "Nickname" %}</th> <th rowspan="2">{% trans "Nickname" %}</th>
<th rowspan="2">{% trans "Name" %}</th>
<th colspan="2">{% trans 'Average' %}</th> <th colspan="2">{% trans 'Average' %}</th>
<th colspan="3">Hanchans</th> <th colspan="3">Hanchans</th>
</tr> </tr>
@@ -42,7 +41,6 @@
src="{% thumbnail player.user.avatar|default:'unknown_profile.jpg' 'avatar' %}" src="{% thumbnail player.user.avatar|default:'unknown_profile.jpg' 'avatar' %}"
width="70" height="70" class="avatar" alt=""/></a></td> width="70" height="70" class="avatar" alt=""/></a></td>
<td><a href="{{ player.get_absolute_url }}?season={{season}}">{{player.user}}</a></td> <td><a href="{{ player.get_absolute_url }}?season={{season}}">{{player.user}}</a></td>
<td>{% if user.is_authenticated %}{{player.user.last_name}} {{player.user.first_name}}{% else %}---{% endif %}</td>
<td class="center">{{player.avg_placement|floatformat:2 }}</td> <td class="center">{{player.avg_placement|floatformat:2 }}</td>
<td class="right">{{player.avg_score|floatformat:0|intcomma }}</td> <td class="right">{{player.avg_score|floatformat:0|intcomma }}</td>
<td class="right">{{player.hanchan_count}}</td> <td class="right">{{player.hanchan_count}}</td>

View File

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

View File

@@ -1,11 +1,11 @@
""" Admin Interface to manage the memberships.""" """ Admin Interface to manage the memberships."""
# import stuff we need from django # import stuff we need from django
from django.contrib import admin from django.contrib import admin, messages
from django.contrib.auth.admin import UserAdmin, GroupAdmin from django.contrib.auth.admin import UserAdmin, GroupAdmin
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from django.core.exceptions import PermissionDenied
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from easy_thumbnails import fields, widgets from easy_thumbnails import fields, widgets
from membership.models import Membership, ActivationRequest from membership.models import Membership, ActivationRequest
@@ -16,13 +16,14 @@ def activate_user(modeladmin, request, queryset):
:param request: An HttpRequest representing the current request. :param request: An HttpRequest representing the current request.
:param queryset: A QuerySet containing the objects selected by the user. :param queryset: A QuerySet containing the objects selected by the user.
""" """
[activation.activate() for activation in queryset ] [activation.activate() for activation in queryset]
activate_user.short_description = _('Activate selected User') activate_user.short_description = _('Activate selected User')
def cleanup_activation(modeladmin, request, queryset): # Ignore PyLintBear (W0613) def cleanup_activation(modeladmin, request,
queryset): # Ignore PyLintBear (W0613)
"""Delete every selected activation request that has been expired. """Delete every selected activation request that has been expired.
:param modeladmin: The ModelAdmin that triggered this action. :param modeladmin: The ModelAdmin that triggered this action.
@@ -38,6 +39,33 @@ cleanup_activation.short_description = _(
"Cleanup selected Activation Requests") "Cleanup selected Activation Requests")
def clear_personal_data(modeladmin, request, queryset):
"""deactivates the account and removes all personal user information.
:param modeladmin: The ModelAdmin that triggered this action.
:param request: An HttpRequest representing the current request.
:param queryset: A QuerySet containing the objects selected by the user.
"""
cleared_memberships = 0
if not modeladmin.has_delete_permission(request):
raise PermissionDenied
for membership in queryset:
if membership.membership == False:
[ setattr(membership, fieldname, None) for fieldname in membership.nullable_personal_data ]
[ setattr(membership, fieldname, "") for fieldname in membership.blankable_personal_data ]
membership.is_active = False
membership.confirmed = False
membership.membership = False
membership.save()
cleared_memberships += 1
else:
modeladmin.message_user(request, _("Can't remove personal data from active member %s.") % membership.username, messages.ERROR)
if cleared_memberships > 0:
modeladmin.message_user(request, _("Cleared %d personal data profiles.") % cleared_memberships, messages.INFO)
clear_personal_data.short_description = _("Clear personal Data")
class ProxyGroup(Group): class ProxyGroup(Group):
"""A Proxy to list Usergroups from django.contrib.auth here.""" """A Proxy to list Usergroups from django.contrib.auth here."""
@@ -50,6 +78,8 @@ class ProxyGroup(Group):
class MembershipAdmin(UserAdmin): class MembershipAdmin(UserAdmin):
"""Admin interface to manage membership. e.g. users.""" """Admin interface to manage membership. e.g. users."""
actions = [clear_personal_data, ]
formfield_overrides = { formfield_overrides = {
fields.ThumbnailerImageField: { fields.ThumbnailerImageField: {
'widget': widgets.ImageClearableFileInput}, 'widget': widgets.ImageClearableFileInput},
@@ -62,9 +92,9 @@ class MembershipAdmin(UserAdmin):
'is_active', 'is_active',
'membership', 'membership',
'confirmed', 'confirmed',
'paid_until', 'last_login',
) )
list_editable = ('confirmed', 'paid_until',) list_editable = ('confirmed', )
list_display_links = ('username',) list_display_links = ('username',)
fieldsets = ( fieldsets = (
(None, {'fields': (('username', 'password'), 'gender', 'avatar', (None, {'fields': (('username', 'password'), 'gender', 'avatar',

View File

@@ -3,16 +3,16 @@ Created on 03.10.2011
@author: Christian @author: Christian
""" """
from datetime import date, timedelta
from captcha.fields import ReCaptchaField from captcha.fields import ReCaptchaField
from django import forms from django import forms
from django.conf import settings from django.conf import settings
from django.contrib import auth from django.contrib import auth
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from utils.massmailer import MassMailer from utils.massmailer import MassMailer
from . import models from . import models
from content.models import Page
class MembershipForm(forms.ModelForm): class MembershipForm(forms.ModelForm):
@@ -25,6 +25,10 @@ class MembershipForm(forms.ModelForm):
help_text=_('Input format: yyyy-mm-dd') help_text=_('Input format: yyyy-mm-dd')
) )
email = forms.EmailField(label=_('Email'), required=True) email = forms.EmailField(label=_('Email'), required=True)
required_membership_fields = (
'first_name', 'last_name', 'birthday',
'street_name', 'post_code', 'city'
)
class Meta: class Meta:
"""get the user model dyamicly""" """get the user model dyamicly"""
@@ -35,36 +39,22 @@ class MembershipForm(forms.ModelForm):
'post_code', 'city' 'post_code', 'city'
) )
def clean_birthday(self): def clean(self):
"""If the user wants to be a member the birthday field is mandatory.""" cleaned_data = super().clean()
if self.cleaned_data['membership'] \ errormsg = _('For your membership, we need this. \
and not self.cleaned_data['birthday']: Please fill out this field yet.')
raise forms.ValidationError(_('For your membership, we need this. \ membership = cleaned_data.get('membership')
Please fill out this field yet.')) for fieldname in self.required_membership_fields:
return self.cleaned_data['birthday'] if membership and not cleaned_data.get(fieldname):
self.add_error(fieldname, errormsg)
def clean_street_name(self): if membership and cleaned_data.get('birthday'):
"""If the user wants to be a member the address is mandatory.""" birthday = cleaned_data.get('birthday')
if self.cleaned_data['membership'] \ today = date.today()
and not self.cleaned_data['street_name']: age = today.year - birthday.year - (
raise forms.ValidationError(_('For your membership, we need this. \ (today.month, today.day) < (birthday.month, birthday.day))
Please fill out this field yet.')) if age < 16:
return self.cleaned_data['street_name'] self.add_error('birthday',
'Midestalter für Mitlieder ist 16 Jahre!')
def clean_post_code(self):
"""If the user wants to be a member the address is mandatory."""
if self.cleaned_data['membership'] \
and not self.cleaned_data['post_code']:
raise forms.ValidationError(_('For your membership, we need this. \
Please fill out this field yet.'))
return self.cleaned_data['post_code']
def clean_city(self):
"""If the user wants to be a member the address is mandatory."""
if self.cleaned_data['membership'] and not self.cleaned_data['city']:
raise forms.ValidationError(_('For your membership, we need this. \
Please fill out this field yet.'))
return self.cleaned_data['city']
class RegistrationForm(MembershipForm): class RegistrationForm(MembershipForm):
@@ -78,6 +68,18 @@ class RegistrationForm(MembershipForm):
widget=forms.PasswordInput(), label=_('password')) widget=forms.PasswordInput(), label=_('password'))
password2 = forms.CharField( password2 = forms.CharField(
widget=forms.PasswordInput(), label=_('password (again)')) widget=forms.PasswordInput(), label=_('password (again)'))
privacy_policy = forms.BooleanField(
label=_('Privacy policy'),
help_text=_(
'I have read and understood the <a href="%s">privacy policy</a>') %
Page.objects.get(slug='privacypolicy').get_absolute_url())
membership = forms.BooleanField(
label=_('Membership'),
help_text=_(
'Yes, I confirm that I am in agreement with the '
'<a href="%s">statutes</a> and would like to become a member.') %
Page.objects.get(slug='statutes').get_absolute_url())
recaptcha = ReCaptchaField() recaptcha = ReCaptchaField()
class Meta: class Meta:
@@ -86,7 +88,7 @@ class RegistrationForm(MembershipForm):
fields = ('first_name', 'last_name', 'username', 'email', fields = ('first_name', 'last_name', 'username', 'email',
'username', 'gender', 'first_name', 'last_name', 'email', 'username', 'gender', 'first_name', 'last_name', 'email',
'avatar', 'avatar',
'website', 'membership', 'birthday', 'telephone', 'membership', 'birthday', 'telephone',
'street_name', 'street_name',
'post_code', 'city' 'post_code', 'city'
) )

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kasu.membership\n" "Project-Id-Version: kasu.membership\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-11 22:50+0100\n" "POT-Creation-Date: 2018-05-08 00:17+0200\n"
"PO-Revision-Date: 2018-01-12 15:22+0105\n" "PO-Revision-Date: 2018-05-08 00:19+0105\n"
"Last-Translator: b'Christian Berg <kasu@xendynastie.at>'\n" "Last-Translator: b'Christian Berg <kasu@xendynastie.at>'\n"
"Language-Team: Kasu <verein@kasu.at>\n" "Language-Team: Kasu <verein@kasu.at>\n"
"Language: de\n" "Language: de\n"
@@ -17,167 +17,200 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.8.9\n" "X-Generator: Poedit 1.8.9\n"
"X-Translated-Using: django-rosetta 0.7.14\n" "X-Translated-Using: django-rosetta 0.8.1\n"
#: src/membership/__init__.py:11 #: .\membership\__init__.py:11
msgid "Male" msgid "Male"
msgstr "Männlich" msgstr "Männlich"
#: src/membership/__init__.py:12 #: .\membership\__init__.py:12
msgid "Female" msgid "Female"
msgstr "Weiblich" msgstr "Weiblich"
#: src/membership/admin.py:22 #: .\membership\admin.py:22
msgid "Activate selected User" msgid "Activate selected User"
msgstr "Ausgewählte Benutzer freischalten" msgstr "Ausgewählte Benutzer freischalten"
#: src/membership/admin.py:38 #: .\membership\admin.py:39
msgid "Cleanup selected Activation Requests" msgid "Cleanup selected Activation Requests"
msgstr "Ausgewählte Aktivierungsanfragen bereinigen" msgstr "Ausgewählte Aktivierungsanfragen bereinigen"
#: src/membership/admin.py:47 #: .\membership\admin.py:62
#, python-format
msgid "Can't remove personal data from active member %s."
msgstr ""
"Persönliche Daten von aktiven Mitglied %s können nicht entfernt werden."
#: .\membership\admin.py:64
#, python-format
msgid "Cleared %d personal data profiles."
msgstr "Persönliche Daten in %d Profilen entfernt."
#: .\membership\admin.py:66
msgid "Clear personal Data"
msgstr "Persönliche Daten bereinigen"
#: .\membership\admin.py:75
msgid "Group" msgid "Group"
msgstr "Gruppe" msgstr "Gruppe"
#: src/membership/admin.py:48 #: .\membership\admin.py:76
msgid "Groups" msgid "Groups"
msgstr "Gruppen" msgstr "Gruppen"
#: src/membership/admin.py:72 src/membership/models.py:163 #: .\membership\admin.py:102 .\membership\forms.py:78
#: src/membership/models.py:216 #: .\membership\models.py:163 .\membership\models.py:218
#: src/membership/templates/membership/register_form.html:32
msgid "Membership" msgid "Membership"
msgstr "Mitgliedschaft" msgstr "Mitgliedschaft"
#: src/membership/admin.py:77 #: .\membership\admin.py:107
msgid "Permissions" msgid "Permissions"
msgstr "Berechtigung" msgstr "Berechtigung"
#: src/membership/admin.py:79 #: .\membership\admin.py:109
msgid "Important dates" msgid "Important dates"
msgstr "Wichtige Daten" msgstr "Wichtige Daten"
#: src/membership/forms.py:23 #: .\membership\forms.py:24
#: .\membership\templates\membership\membership_detail.html:46
msgid "birthday" msgid "birthday"
msgstr "Geburtstag" msgstr "Geburtstag"
#: src/membership/forms.py:25 #: .\membership\forms.py:26
msgid "Input format: yyyy-mm-dd" msgid "Input format: yyyy-mm-dd"
msgstr "Eingabeformat: tt.mm.jjjj" msgstr "Eingabeformat: tt.mm.jjjj"
#: src/membership/forms.py:27 #: .\membership\forms.py:28
#: .\membership\templates\membership\membership_detail.html:48
msgid "Email" msgid "Email"
msgstr "E-Mail" msgstr "E-Mail"
#: src/membership/forms.py:42 src/membership/forms.py:50 #: .\membership\forms.py:45
#: src/membership/forms.py:58
msgid "" msgid ""
"For your membership, we need this. Please fill out this field " "For your membership, we need this. Please fill out this field "
"yet." "yet."
msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen." msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen."
#: src/membership/forms.py:65 #: .\membership\forms.py:69
msgid ""
"For your membership, we need this. Please fill out this field "
"yet."
msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen."
#: src/membership/forms.py:78
msgid "password" msgid "password"
msgstr "Passwort" msgstr "Passwort"
#: src/membership/forms.py:80 #: .\membership\forms.py:71
msgid "password (again)" msgid "password (again)"
msgstr "Passwort (wiederholen)" msgstr "Passwort (wiederholen)"
#: src/membership/forms.py:102 #: .\membership\forms.py:73
msgid "Privacy policy"
msgstr "Datenschutzerklärung"
#: .\membership\forms.py:75
#, python-format
msgid "I have read and understood the <a href=\"%s\">privacy policy</a>"
msgstr ""
"Ich habe die <a href=\"%s\"> Datenschutzerklärung</a> gelesen und verstanden"
#: .\membership\forms.py:80
#, python-format
#| msgid ""
#| "Yes, I confirm that I am in agreement with the statutes and would "
#| "like to become a member."
msgid ""
"Yes, I confirm that I am in agreement with the <a href=\"%s\">statutes</a> "
"and would like to become a member."
msgstr ""
"Ja, ich bin mit den <a href=\"%s\">Statuen</a> einverstanden und möchte "
"Mitglied werden."
#: .\membership\forms.py:105
msgid "This username is already taken. Please choose another." msgid "This username is already taken. Please choose another."
msgstr "" msgstr ""
"Diesen Benutzername ist schon vergeben. Bitte einen anderen auswählen." "Diesen Benutzername ist schon vergeben. Bitte einen anderen auswählen."
#: src/membership/forms.py:109 #: .\membership\forms.py:112
msgid "" msgid ""
"This email address is already in use. Please supply a different " "This email address is already in use. Please supply a different "
"email address." "email address."
msgstr "Die E-Mail Adresse wird schon verwendet. Bitte eine andere angeben." msgstr "Die E-Mail Adresse wird schon verwendet. Bitte eine andere angeben."
#: src/membership/forms.py:119 #: .\membership\forms.py:122
msgid "The two password fields didn't match." msgid "The two password fields didn't match."
msgstr "Die beiden Passwörter passen nicht." msgstr "Die beiden Passwörter passen nicht."
#: src/membership/models.py:84 #: .\membership\models.py:84
msgid "user" msgid "user"
msgstr "Benutzer" msgstr "Benutzer"
#: src/membership/models.py:86 #: .\membership\models.py:86
msgid "activation key" msgid "activation key"
msgstr "Aktivierungsschlüssel" msgstr "Aktivierungsschlüssel"
#: src/membership/models.py:90 #: .\membership\models.py:90
msgid "pending activation" msgid "pending activation"
msgstr "Ausstehende Aktivierung" msgstr "Ausstehende Aktivierung"
#: src/membership/models.py:91 #: .\membership\models.py:91
msgid "pending activations" msgid "pending activations"
msgstr "Wartende Aktivierungen" msgstr "Wartende Aktivierungen"
#: src/membership/models.py:94 #: .\membership\models.py:94
#, python-format #, python-format
msgid "user registration for %s" msgid "user registration for %s"
msgstr "Benutzerregistrierung für %s" msgstr "Benutzerregistrierung für %s"
#: src/membership/models.py:149 #: .\membership\models.py:149
msgid "Gender" msgid "Gender"
msgstr "Geschlecht" msgstr "Geschlecht"
#: src/membership/models.py:165 #: .\membership\models.py:165
msgid "" msgid ""
"Yes, I confirm that I am in agreement with the statutes and would " "Yes, I confirm that I am in agreement with the statutes and would "
"like to become a member." "like to become a member."
msgstr "Ja, ich bin mit den Statuen einverstanden und möchte Mitglied werden." msgstr "Ja, ich bin mit den Statuen einverstanden und möchte Mitglied werden."
#: src/membership/models.py:169 #: .\membership\models.py:169
msgid "Birthday Date" msgid "Birthday Date"
msgstr "Geburtstag" msgstr "Geburtstag"
#: src/membership/models.py:173 #: .\membership\models.py:173
#: .\membership\templates\membership\membership_detail.html:49
msgid "Telephone" msgid "Telephone"
msgstr "Telefon" msgstr "Telefon"
#: src/membership/models.py:179 #: .\membership\models.py:179
#: .\membership\templates\membership\membership_detail.html:47
msgid "Address" msgid "Address"
msgstr "Adresse" msgstr "Adresse"
#: src/membership/models.py:185 #: .\membership\models.py:185
msgid "Postcode" msgid "Postcode"
msgstr "Postleitzahl" msgstr "Postleitzahl"
#: src/membership/models.py:190 #: .\membership\models.py:190
msgid "Town/City" msgid "Town/City"
msgstr "Ort" msgstr "Ort"
#: src/membership/models.py:198 #: .\membership\models.py:198
msgid "Paid until" msgid "Paid until"
msgstr "Bezahlt bis" msgstr "Bezahlt bis"
#: src/membership/models.py:204 #: .\membership\models.py:204
msgid "Confirmed" msgid "Confirmed"
msgstr "Bestätigt" msgstr "Bestätigt"
#: src/membership/models.py:206 #: .\membership\models.py:206
msgid "This person has paid the membership fee." msgid "This person has paid the membership fee."
msgstr "Diese Person hat ihre Mitgliedschaft bezahlt" msgstr "Diese Person hat ihre Mitgliedschaft bezahlt"
#: src/membership/models.py:217 #: .\membership\models.py:219
msgid "Memberships" msgid "Memberships"
msgstr "Mitgliedschaften" msgstr "Mitgliedschaften"
#: src/membership/templates/membership/email/activation_email.txt:2 #: .\membership\templates\membership\email\activation_email.txt:2
#, python-format #, python-format
msgid "Welcome %(user)s," msgid "Welcome %(user)s,"
msgstr "Herzlich willkommen %(user)s," msgstr "Herzlich willkommen %(user)s,"
#: src/membership/templates/membership/email/activation_email.txt:4 #: .\membership\templates\membership\email\activation_email.txt:4
#, python-format #, python-format
msgid "" msgid ""
"We received an account request on %(site.domain)s for your email address.\n" "We received an account request on %(site.domain)s for your email address.\n"
@@ -186,7 +219,7 @@ msgstr ""
"Jemand (hoffentlich du selbst) möchte mit dieser E-Mail Adresse einen neuen Benutzer Account für %(site.domain)s anlegen.\n" "Jemand (hoffentlich du selbst) möchte mit dieser E-Mail Adresse einen neuen Benutzer Account für %(site.domain)s anlegen.\n"
"Solltest du diesen Account aktivieren wollen, klicke bitte auf den unten stehenden Link, oder kopiere diesen in die Adresszeile deines Browsers:" "Solltest du diesen Account aktivieren wollen, klicke bitte auf den unten stehenden Link, oder kopiere diesen in die Adresszeile deines Browsers:"
#: src/membership/templates/membership/email/activation_email.txt:9 #: .\membership\templates\membership\email\activation_email.txt:9
#, python-format #, python-format
msgid "" msgid ""
"If you do not want to open an account on %(site.domain)s, please ignore this email.\n" "If you do not want to open an account on %(site.domain)s, please ignore this email.\n"
@@ -195,7 +228,7 @@ msgstr ""
"Wenn du keinen Zugang für %(site.domain)s eröffnen willst, ignoriere diese E-Mail bitte.\n" "Wenn du keinen Zugang für %(site.domain)s eröffnen willst, ignoriere diese E-Mail bitte.\n"
"Die Zugangsdaten werden dann in ein paar Tagen automatisch gelöscht." "Die Zugangsdaten werden dann in ein paar Tagen automatisch gelöscht."
#: src/membership/templates/membership/email/activation_email.txt:12 #: .\membership\templates\membership\email\activation_email.txt:12
#, python-format #, python-format
msgid "" msgid ""
"Best Regards,\n" "Best Regards,\n"
@@ -204,308 +237,230 @@ msgstr ""
"mit den besten Wünschen\n" "mit den besten Wünschen\n"
"Das Team von %(site.domain)s" "Das Team von %(site.domain)s"
#: src/membership/templates/membership/email/password_reset_email.html:2 #: .\membership\templates\membership\email\password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset" msgid "You're receiving this e-mail because you requested a password reset"
msgstr "" msgstr ""
"Du hast diese E-Mail erhalten, weil jemand die das Passwort zurücksetzen " "Du hast diese E-Mail erhalten, weil jemand die das Passwort zurücksetzen "
"möchte. " "möchte. "
#: src/membership/templates/membership/email/password_reset_email.html:3 #: .\membership\templates\membership\email\password_reset_email.html:3
#, python-format #, python-format
msgid "for your user account at %(site_name)s" msgid "for your user account at %(site_name)s"
msgstr "Für deinen Benutzerzugang auf %(site_name)s" msgstr "Für deinen Benutzerzugang auf %(site_name)s"
#: src/membership/templates/membership/email/password_reset_email.html:5 #: .\membership\templates\membership\email\password_reset_email.html:5
msgid "Please go to the following page and choose a new password:" msgid "Please go to the following page and choose a new password:"
msgstr "Bitte gehe auf folgende Seite und wähle ein neues Passwort aus:" msgstr "Bitte gehe auf folgende Seite und wähle ein neues Passwort aus:"
#: src/membership/templates/membership/email/password_reset_email.html:9 #: .\membership\templates\membership\email\password_reset_email.html:9
msgid "Your username, in case you've forgotten:" msgid "Your username, in case you've forgotten:"
msgstr "Dein Benutzername, für den Fall das du diesen vergessen hast:" msgstr "Dein Benutzername, für den Fall das du diesen vergessen hast:"
#: src/membership/templates/membership/email/password_reset_email.html:11 #: .\membership\templates\membership\email\password_reset_email.html:11
msgid "Thanks for using our site!" msgid "Thanks for using our site!"
msgstr "Danke das du unsere Seite verwendest!" msgstr "Danke das du unsere Seite verwendest!"
#: src/membership/templates/membership/email/password_reset_email.html:13 #: .\membership\templates\membership\email\password_reset_email.html:13
#, python-format #, python-format
msgid "The %(site_name)s team" msgid "The %(site_name)s team"
msgstr "Das %(site_name)s Team" msgstr "Das %(site_name)s Team"
#: src/membership/templates/membership/email/password_reset_subject.txt:2 #: .\membership\templates\membership\email\password_reset_subject.txt:2
#, python-format #, python-format
msgid "Password reset on %(site_name)s" msgid "Password reset on %(site_name)s"
msgstr "Passwort auf %(site_name)s zurücksetzen" msgstr "Passwort auf %(site_name)s zurücksetzen"
#: src/membership/templates/membership/hanchan_table.html:5 #: .\membership\templates\membership\hanchan_table.html:5
msgid "Start" msgid "Start"
msgstr "Beginn" msgstr "Beginn"
#: src/membership/templates/membership/hanchan_table.html:6 #: .\membership\templates\membership\hanchan_table.html:6
msgid "Event" msgid "Event"
msgstr "Termin" msgstr "Termin"
#: src/membership/templates/membership/hanchan_table.html:7 #: .\membership\templates\membership\hanchan_table.html:7
msgid "Players" msgid "Players"
msgstr "Spieler" msgstr "Spieler"
#: src/membership/templates/membership/hanchan_table.html:8 #: .\membership\templates\membership\hanchan_table.html:8
msgid "Kyu Points" msgid "Kyu Points"
msgstr "Kyū Punkte" msgstr "Kyū Punkte"
#: src/membership/templates/membership/hanchan_table.html:9 #: .\membership\templates\membership\hanchan_table.html:9
msgid "Dan Points" msgid "Dan Points"
msgstr "Dan Punkte" msgstr "Dan Punkte"
#: src/membership/templates/membership/hanchan_table.html:10 #: .\membership\templates\membership\hanchan_table.html:10
msgid "Bonus Points" msgid "Bonus Points"
msgstr "Bonus Punkte" msgstr "Bonus Punkte"
#: src/membership/templates/membership/hanchan_table.html:11 #: .\membership\templates\membership\hanchan_table.html:11
msgid "Comment" msgid "Comment"
msgstr "Anmerkung" msgstr "Anmerkung"
#: src/membership/templates/membership/hanchan_table.html:26 #: .\membership\templates\membership\hanchan_table.html:26
msgid "This Hanchan does not validate" msgid "This Hanchan does not validate"
msgstr "Diese Hanchan ist ungültig" msgstr "Diese Hanchan ist ungültig"
#: src/membership/templates/membership/membership_detail.html:6 #: .\membership\templates\membership\membership_detail.html:5
msgid "profile for" msgid "profile for"
msgstr "Profil für" msgstr "Profil für"
#: src/membership/templates/membership/membership_detail.html:10 #: .\membership\templates\membership\membership_detail.html:9
msgid "Ladder Hanchans" msgid "Ladder Hanchans"
msgstr "Ladder Hanchans" msgstr "Ladder Hanchans"
#: src/membership/templates/membership/membership_detail.html:11 #: .\membership\templates\membership\membership_detail.html:10
msgid "Kyu Hanchans" msgid "Kyu Hanchans"
msgstr "Kyū Hanchans" msgstr "Kyū Hanchans"
#: src/membership/templates/membership/membership_detail.html:12 #: .\membership\templates\membership\membership_detail.html:11
msgid "Dan Hanchans" msgid "Dan Hanchans"
msgstr "Dan Hanchans" msgstr "Dan Hanchans"
#: src/membership/templates/membership/membership_detail.html:13 #: .\membership\templates\membership\membership_detail.html:12
msgid "Invalid Hanchans" msgid "Invalid Hanchans"
msgstr "Ungültige Hanchans" msgstr "Ungültige Hanchans"
#: src/membership/templates/membership/membership_detail.html:14 #: .\membership\templates\membership\membership_detail.html:13
msgid "Mai-Star Games" msgid "Mai-Star Games"
msgstr "Mai-Star Spiele" msgstr "Mai-Star Spiele"
#: src/membership/templates/membership/membership_detail.html:20 #: .\membership\templates\membership\membership_detail.html:17
msgid "Profile Image" msgid "Profile Image"
msgstr "Profilbild" msgstr "Profilbild"
#: src/membership/templates/membership/membership_detail.html:28 #: .\membership\templates\membership\membership_detail.html:26
msgid "Member Since" #: .\membership\templates\membership\membership_detail.html:29
msgstr "Mitglied seit"
#: src/membership/templates/membership/membership_detail.html:29
msgid "Last Login"
msgstr "Letzte Anmeldung"
#: src/membership/templates/membership/membership_detail.html:39
#: src/membership/templates/membership/membership_detail.html:43
msgid "Points" msgid "Points"
msgstr "Punkte" msgstr "Punkte"
#: src/membership/templates/membership/membership_detail.html:40 #: .\membership\templates\membership\membership_detail.html:26
msgid "Maximum" msgid "Maximum"
msgstr "Maximum" msgstr "Maximum"
#: src/membership/templates/membership/membership_detail.html:45 #: .\membership\templates\membership\membership_detail.html:32
msgid "Games Total" msgid "Games Total"
msgstr "Spiele gesamt" msgstr "Spiele gesamt"
#: src/membership/templates/membership/membership_detail.html:46 #: .\membership\templates\membership\membership_detail.html:32
#: src/membership/templates/membership/membership_detail.html:48 #: .\membership\templates\membership\membership_detail.html:35
msgid "Won" msgid "Won"
msgstr "Gewonnen" msgstr "Gewonnen"
#: src/membership/templates/membership/membership_detail.html:46 #: .\membership\templates\membership\membership_detail.html:32
#: src/membership/templates/membership/membership_detail.html:48 #: .\membership\templates\membership\membership_detail.html:35
msgid "Good" msgid "Good"
msgstr "Gut" msgstr "Gut"
#: src/membership/templates/membership/membership_detail.html:48 #: .\membership\templates\membership\membership_detail.html:35
msgid "Current Season" msgid "Current Season"
msgstr "Aktuelle Saison" msgstr "Aktuelle Saison"
#: src/membership/templates/membership/membership_detail.html:58 #: .\membership\templates\membership\membership_detail.html:42
msgid "Edit Profile" msgid "private data"
msgstr "Profil bearbeiten" msgstr "Private Daten"
#: src/membership/templates/membership/membership_detail.html:62 #: .\membership\templates\membership\membership_detail.html:43
#: src/membership/templates/registration/password_change_form.html:23 msgid "This data can only be seen by yourself and members of the board."
msgid "Change Password"
msgstr "Passwort ändern"
#: src/membership/templates/membership/membership_detail.html:66
#: src/membership/templates/membership/membership_detail.html:70
#: src/membership/templates/membership/membership_detail.html:74
#, python-format
msgid "Associate with %(name)s"
msgstr "Verbinde mit %(name)s"
#: src/membership/templates/membership/membership_form.html:4
#: src/membership/templates/membership/membership_form.html:6
#: src/membership/templates/membership/membership_form.html:11
msgid "Edit Userprofile"
msgstr "Profil bearbeiten"
#: src/membership/templates/membership/membership_form.html:15
msgid "Reset"
msgstr "Zurücksetzen"
#: src/membership/templates/membership/membership_form.html:16
msgid "Save"
msgstr "Speichern"
#: src/membership/templates/membership/register_form.html:4
#: src/membership/templates/membership/register_form.html:7
msgid "Registration"
msgstr "Registrieren"
#: src/membership/templates/membership/register_form.html:9
msgid ""
"After you've provided your account data, you'll receive\n"
" an email asking you to verify your email address. You have to click on the\n"
" link in this verification email to confirm your email address, otherwise\n"
" your can't login."
msgstr "" msgstr ""
"Nach dem du deine Daten eingegeben hast, wirst du eine E-Mail zur Bestätigung bekommen.\n" "Diese Angaben können nur von dir selbst und von Mitgliedern des Vorstandes "
"Bitte klicke auf den Link in dieser E-Mail zur Verifizierung, erst dann ist die Anmeldung möglich." "eingesehen werden."
#: src/membership/templates/membership/register_form.html:20 #: .\membership\templates\membership\membership_detail.html:45
msgid "name" msgid "name"
msgstr "Name" msgstr "Name"
#: src/membership/templates/membership/register_form.html:26 #: .\membership\templates\membership\membership_detail.html:50
#: src/membership/templates/registration/login.html:41 msgid "Member Since"
msgid "login" msgstr "Mitglied seit"
msgstr "Anmelden"
#: src/membership/templates/membership/register_form.html:39 #: .\membership\templates\membership\membership_detail.html:51
msgid "Last Login"
msgstr "Letzte Anmeldung"
#: .\membership\templates\membership\membership_detail.html:54
msgid "Edit Profile"
msgstr "Profil bearbeiten"
#: .\membership\templates\membership\membership_detail.html:55
#: .\membership\templates\registration\password_change_form.html:23
msgid "Change Password"
msgstr "Passwort ändern"
#: .\membership\templates\membership\membership_form.html:4
#: .\membership\templates\membership\membership_form.html:6
#: .\membership\templates\membership\membership_form.html:11
msgid "Edit Userprofile"
msgstr "Profil bearbeiten"
#: .\membership\templates\membership\membership_form.html:15
msgid "Reset"
msgstr "Zurücksetzen"
#: .\membership\templates\membership\membership_form.html:16
msgid "Save"
msgstr "Speichern"
#: .\membership\templates\membership\register_form.html:4
msgid "Registration"
msgstr "Registrieren"
#: .\membership\templates\membership\register_form.html:10
msgid "Login crendentials"
msgstr "Anmeldedaten"
#: .\membership\templates\membership\register_form.html:16
msgid "Club membership"
msgstr "Vereinsmitgliedschaft"
#: .\membership\templates\membership\register_form.html:27
msgid "reset" msgid "reset"
msgstr "Zurücksetzen" msgstr "Zurücksetzen"
#: src/membership/templates/membership/register_form.html:41 #: .\membership\templates\membership\register_form.html:29
#: src/membership/templates/registration/login.html:35
msgid "register" msgid "register"
msgstr "Registrieren" msgstr "Registrieren"
#: src/membership/templates/membership/register_successful.html:5 #: .\membership\templates\membership\register_successful.html:5
#: src/membership/templates/membership/register_successful.html:7 #: .\membership\templates\membership\register_successful.html:7
#: src/membership/templates/membership/register_successful.html:10 #: .\membership\templates\membership\register_successful.html:10
msgid "Activation sent" msgid "Activation sent"
msgstr "Aktivierung wurde zugesendet" msgstr "Aktivierung wurde zugesendet"
#: src/membership/templates/registration/login.html:4 #: .\membership\templates\registration\login.html:17
#: src/membership/templates/registration/login.html:11 msgid "login"
#: src/membership/templates/registration/login.html:53
#: src/membership/templates/registration/password_reset_complete.html:13
msgid "Login"
msgstr "Anmelden" msgstr "Anmelden"
#: src/membership/templates/registration/login.html:17 #: .\membership\templates\registration\login.html:19
msgid "Have you already registered?" msgid "Your username and password didn't match. Please try again."
msgstr "Bereits registriert?" msgstr "Anmeldung fehlgeschlagen, bitte Benutzername und Passwort überprüfen."
#: src/membership/templates/registration/login.html:18 #: .\membership\templates\registration\login.html:22
#| msgid ""
#| "\n"
#| "<p>As a registered member you can:</p>\n"
#| "<ul>\n"
#| " <li>leave comments on this page.</li>\n"
#| " <li>subscribe to our Newsletter</li>\n"
#| " <li>apply to a membership to our club</li>\n"
#| " <li>club-members have access to our ranking-system</li>\n"
#| "</ul>\n"
msgid ""
"\n"
" <p>As a registered member you can:</p>\n"
" <ul>\n"
" <li>leave comments on this page.</li>\n"
" <li>subscribe to our Newsletter</li>\n"
" <li>apply to a membership to our club</li>\n"
" <li>club-members have access to our ranking-system</li>\n"
" </ul>\n"
" "
msgstr ""
"\n"
"<p>Als registrierter auf dieser Seite kannst du:</p>\n"
"<ul>\n"
" <li>Kommentare auf dieser Seite hinterlassen.</li>\n"
" <li>Dich für unseren Newsletter anmelden</li>\n"
" <li>Mitglied in unserem Verein werden</li>\n"
" <li>Vereinsmitglieder haben auch vollen Zugang zu unserem Ranking System</li>\n"
"</ul>"
#: src/membership/templates/registration/login.html:27
#| msgid ""
#| "\n"
#| "<p>You can register here with your Google, or Facebook account.\n"
#| "If you don't own such an account, or do not want to use it for authentication,\n"
#| "you can fill out our registration form.</p>\n"
msgid ""
"\n"
" <p>You can register here with your Google, or Facebook account.\n"
" If you don't own such an account, or do not want to use it for\n"
" authentication,\n"
" you can fill out our registration form.</p>\n"
" "
msgstr ""
"\n"
"<p>Du kannst dich auch über deinen Facebook, Google, oder Twitter Account anmelden.\n"
"Wenn du so etwas nicht besitzt, oder nicht verwenden möchtest, \n"
"kannst du auch das Registrierungsformular ausfüllen.</p>"
#: src/membership/templates/registration/login.html:45
#| msgid "Your username and password didn't match. Please try again."
msgid ""
"Your username and password didn't match. Please try\n"
" again."
msgstr ""
"Benutzername und Passwort stimmen nicht überein. Bitte noch einmal "
"versuchen."
#: src/membership/templates/registration/login.html:50
msgid "Forgot your Password?" msgid "Forgot your Password?"
msgstr "Passwort vergessen?" msgstr "Passwort vergessen?"
#: src/membership/templates/registration/login.html:60 #: .\membership\templates\registration\login.html:26
msgid "or login with an existing Account" #: .\membership\templates\registration\password_reset_complete.html:13
msgstr "oder über einen existierenden Account anmelden" msgid "Login"
msgstr "Anmelden"
#: src/membership/templates/registration/login.html:63 #: .\membership\templates\registration\password_change_done.html:4
msgid "Login with Facebook" #: .\membership\templates\registration\password_change_done.html:7
msgstr "Über Facebook anmelden"
#: src/membership/templates/registration/login.html:66
msgid "Login with Twitter"
msgstr "Über Twitter anmelden"
#: src/membership/templates/registration/login.html:69
msgid "Login with Google"
msgstr "Über Google Anmelden"
#: src/membership/templates/registration/password_change_done.html:4
#: src/membership/templates/registration/password_change_done.html:7
msgid "Password change successful" msgid "Password change successful"
msgstr "Benutzerprofil erfolgreich geändert." msgstr "Benutzerprofil erfolgreich geändert."
#: src/membership/templates/registration/password_change_done.html:8 #: .\membership\templates\registration\password_change_done.html:8
msgid "Your password was changed." msgid "Your password was changed."
msgstr "Passwort geändet" msgstr "Passwort geändet"
#: src/membership/templates/registration/password_change_form.html:4 #: .\membership\templates\registration\password_change_form.html:4
#: src/membership/templates/registration/password_change_form.html:9 #: .\membership\templates\registration\password_change_form.html:9
#: src/membership/templates/registration/password_change_form.html:16 #: .\membership\templates\registration\password_change_form.html:16
msgid "Password change" msgid "Password change"
msgstr "Passwort wechseln" msgstr "Passwort wechseln"
#: src/membership/templates/registration/password_change_form.html:10 #: .\membership\templates\registration\password_change_form.html:10
msgid "" msgid ""
"Please enter your old password, for security's sake, and then enter your new" "Please enter your old password, for security's sake, and then enter your new"
" password twice so we can verify you typed it in correctly." " password twice so we can verify you typed it in correctly."
@@ -513,23 +468,23 @@ msgstr ""
"Zur Sicherheit bitte altes Passwort einmal und das gewünschte neue Passwort" "Zur Sicherheit bitte altes Passwort einmal und das gewünschte neue Passwort"
" zweimal angeben, so können Tippfehler abgefangen werden." " zweimal angeben, so können Tippfehler abgefangen werden."
#: src/membership/templates/registration/password_reset_complete.html:4 #: .\membership\templates\registration\password_reset_complete.html:4
#: src/membership/templates/registration/password_reset_complete.html:6 #: .\membership\templates\registration\password_reset_complete.html:6
#: src/membership/templates/registration/password_reset_complete.html:9 #: .\membership\templates\registration\password_reset_complete.html:9
msgid "Password reset complete" msgid "Password reset complete"
msgstr "Das Rücksetzen des Passwortes ist abgeschlossen." msgstr "Das Rücksetzen des Passwortes ist abgeschlossen."
#: src/membership/templates/registration/password_reset_complete.html:10 #: .\membership\templates\registration\password_reset_complete.html:10
msgid "Your password has been set. You may go ahead and log in now." msgid "Your password has been set. You may go ahead and log in now."
msgstr "Das Passwort wurde gesetzt, Du kannst dich nun damit anmelden." msgstr "Das Passwort wurde gesetzt, Du kannst dich nun damit anmelden."
#: src/membership/templates/registration/password_reset_confirm.html:4 #: .\membership\templates\registration\password_reset_confirm.html:4
#: src/membership/templates/registration/password_reset_confirm.html:6 #: .\membership\templates\registration\password_reset_confirm.html:6
#: src/membership/templates/registration/password_reset_confirm.html:15 #: .\membership\templates\registration\password_reset_confirm.html:15
msgid "Enter new password" msgid "Enter new password"
msgstr "Neues Passwort eingeben" msgstr "Neues Passwort eingeben"
#: src/membership/templates/registration/password_reset_confirm.html:12 #: .\membership\templates\registration\password_reset_confirm.html:12
msgid "" msgid ""
"Please enter your new password twice so we can verify you typed it in " "Please enter your new password twice so we can verify you typed it in "
"correctly." "correctly."
@@ -537,15 +492,15 @@ msgstr ""
"Bitte das Passwort zweimal eingeben, um sicher zu stellen das es korrekt " "Bitte das Passwort zweimal eingeben, um sicher zu stellen das es korrekt "
"eingetippt wurde." "eingetippt wurde."
#: src/membership/templates/registration/password_reset_confirm.html:18 #: .\membership\templates\registration\password_reset_confirm.html:18
msgid "Change my password" msgid "Change my password"
msgstr "Passwort ändern" msgstr "Passwort ändern"
#: src/membership/templates/registration/password_reset_confirm.html:26 #: .\membership\templates\registration\password_reset_confirm.html:26
msgid "Password reset unsuccessful" msgid "Password reset unsuccessful"
msgstr "Passwort rücksetzen fehlgeschlagen" msgstr "Passwort rücksetzen fehlgeschlagen"
#: src/membership/templates/registration/password_reset_confirm.html:27 #: .\membership\templates\registration\password_reset_confirm.html:27
msgid "" msgid ""
"The password reset link was invalid, possibly because it has already been " "The password reset link was invalid, possibly because it has already been "
"used. Please request a new password reset." "used. Please request a new password reset."
@@ -553,22 +508,22 @@ msgstr ""
"Der Link für die Rücksetzung des Passwortes war ungültig, vermutlich wurde " "Der Link für die Rücksetzung des Passwortes war ungültig, vermutlich wurde "
"er schon einmal benutzt. Bitte eine neue Rücksetzung beantragen." "er schon einmal benutzt. Bitte eine neue Rücksetzung beantragen."
#: src/membership/templates/registration/password_reset_done.html:4 #: .\membership\templates\registration\password_reset_done.html:4
#: src/membership/templates/registration/password_reset_done.html:6 #: .\membership\templates\registration\password_reset_done.html:6
#: src/membership/templates/registration/password_reset_done.html:12 #: .\membership\templates\registration\password_reset_done.html:12
msgid "Password reset successful" msgid "Password reset successful"
msgstr "Passwort erfolgreich zurückgesetzt." msgstr "Passwort erfolgreich zurückgesetzt."
#: src/membership/templates/registration/password_reset_form.html:4 #: .\membership\templates\registration\password_reset_form.html:4
#: src/membership/templates/registration/password_reset_form.html:6 #: .\membership\templates\registration\password_reset_form.html:6
msgid "Password reset" msgid "Password reset"
msgstr "Passwort zurücksetzen" msgstr "Passwort zurücksetzen"
#: src/membership/templates/registration/password_reset_form.html:21 #: .\membership\templates\registration\password_reset_form.html:21
msgid "Transmit" msgid "Transmit"
msgstr "Übermitteln" msgstr "Übermitteln"
#: src/membership/views.py:61 #: .\membership\views.py:61
msgid "" msgid ""
"Activation successful. You can now login anytime with you username " "Activation successful. You can now login anytime with you username "
"and password." "and password."
@@ -576,15 +531,82 @@ msgstr ""
"Die Aktivierung war erfolgreich. Du kannst dich ab jetzt jederzeit mit " "Die Aktivierung war erfolgreich. Du kannst dich ab jetzt jederzeit mit "
"deinem Benutzernamen und Passwort anmelden." "deinem Benutzernamen und Passwort anmelden."
#: src/membership/views.py:88 #: .\membership\views.py:88
msgid "User Profile changed successfully" msgid "User Profile changed successfully"
msgstr "Benutzerprofil erfolgreich geändert." msgstr "Benutzerprofil erfolgreich geändert."
#: src/membership/views.py:112 #: .\membership\views.py:112
#| msgid "No %(verbose_name)s found matching the query"
msgid "No Membership found matching the query" msgid "No Membership found matching the query"
msgstr "Kein Mitglied gefunden welche der Anfrage entspricht" msgstr "Kein Mitglied gefunden welche der Anfrage entspricht"
#~ msgid "Associate with %(name)s"
#~ msgstr "Verbinde mit %(name)s"
#~ msgid "or"
#~ msgstr "oder"
#~ msgid "Login with Facebook"
#~ msgstr "Über Facebook anmelden"
#~ msgid "Login with Twitter"
#~ msgstr "Über Twitter anmelden"
#~ msgid "Login with Google"
#~ msgstr "Über Google Anmelden"
#~ msgid ""
#~ "After you've provided your account data, you'll receive\n"
#~ " an email asking you to verify your email address. You have to click on the\n"
#~ " link in this verification email to confirm your email address, otherwise\n"
#~ " your can't login."
#~ msgstr ""
#~ "Nach dem du deine Daten eingegeben hast, wirst du eine E-Mail zur Bestätigung bekommen.\n"
#~ "Bitte klicke auf den Link in dieser E-Mail zur Verifizierung, erst dann ist die Anmeldung möglich."
#~ msgid "Have you already registered?"
#~ msgstr "Bereits registriert?"
#~ msgid ""
#~ "\n"
#~ " <p>As a registered member you can:</p>\n"
#~ " <ul>\n"
#~ " <li>leave comments on this page.</li>\n"
#~ " <li>subscribe to our Newsletter</li>\n"
#~ " <li>apply to a membership to our club</li>\n"
#~ " <li>club-members have access to our ranking-system</li>\n"
#~ " </ul>\n"
#~ " "
#~ msgstr ""
#~ "\n"
#~ "<p>Als registrierter auf dieser Seite kannst du:</p>\n"
#~ "<ul>\n"
#~ " <li>Kommentare auf dieser Seite hinterlassen.</li>\n"
#~ " <li>Dich für unseren Newsletter anmelden</li>\n"
#~ " <li>Mitglied in unserem Verein werden</li>\n"
#~ " <li>Vereinsmitglieder haben auch vollen Zugang zu unserem Ranking System</li>\n"
#~ "</ul>"
#~ msgid ""
#~ "\n"
#~ " <p>You can register here with your Google, or Facebook account.\n"
#~ " If you don't own such an account, or do not want to use it for\n"
#~ " authentication,\n"
#~ " you can fill out our registration form.</p>\n"
#~ " "
#~ msgstr ""
#~ "\n"
#~ "<p>Du kannst dich auch über deinen Facebook, Google, oder Twitter Account anmelden.\n"
#~ "Wenn du so etwas nicht besitzt, oder nicht verwenden möchtest, \n"
#~ "kannst du auch das Registrierungsformular ausfüllen.</p>"
#~ msgid "or login with an existing Account"
#~ msgstr "oder über einen existierenden Account anmelden"
#~ msgid ""
#~ "For your membership, we need this. Please fill out this field "
#~ "yet."
#~ msgstr "Diese Angabe wird für eine Mitgliedschaft benötigt, bitte ausfüllen."
#~ msgid "Given Name" #~ msgid "Given Name"
#~ msgstr "Vorname" #~ msgstr "Vorname"

View File

@@ -7,8 +7,8 @@ from os import path
from django.conf import settings from django.conf import settings
from django.contrib.auth.models import AbstractUser from django.contrib.auth.models import AbstractUser
from django.urls import reverse
from django.db import models from django.db import models
from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from easy_thumbnails.fields import ThumbnailerImageField from easy_thumbnails.fields import ThumbnailerImageField
@@ -150,7 +150,7 @@ class Membership(AbstractUser):
max_length=1, max_length=1,
choices=GENDER_CHOICES, choices=GENDER_CHOICES,
blank=True, blank=True,
null=True null=True,
) )
website = models.URLField(blank=True) website = models.URLField(blank=True)
avatar = ThumbnailerImageField( avatar = ThumbnailerImageField(
@@ -206,8 +206,10 @@ class Membership(AbstractUser):
help_text=_('This person has paid the membership fee.') help_text=_('This person has paid the membership fee.')
) )
# comment = models.TextField(blank=True) nullable_personal_data = (
# objects = MembershipManager() 'gender', 'birthday', 'telephone', 'street_name', 'post_code', 'city')
blankable_personal_data = (
'email', 'password', 'first_name', 'last_name', 'website',)
class Meta(object): class Meta(object):
"""To manage object ordering and dispalynames on the admin interface.""" """To manage object ordering and dispalynames on the admin interface."""

View File

@@ -1,5 +1,4 @@
{% extends "base.html" %} {% extends "base.html" %}{% load i18n comments thumbnail %}
{% load i18n comments thumbnail %}
{% block title %}{{ membership.first_name }} {{membership.last_name}}{% endblock %} {% block title %}{{ membership.first_name }} {{membership.last_name}}{% endblock %}
@@ -12,79 +11,56 @@
<li><a href="{% url 'player-dan-score' membership.username %}">{% trans "Dan Hanchans" %}</a></li> <li><a href="{% url 'player-dan-score' membership.username %}">{% trans "Dan Hanchans" %}</a></li>
<li><a href="{% url 'player-invalid-score' membership.username %}">{% trans "Invalid Hanchans" %}</a></li> <li><a href="{% url 'player-invalid-score' membership.username %}">{% trans "Invalid Hanchans" %}</a></li>
<li><a href="{% url 'maistar-player-games' membership.username %}">{% trans "Mai-Star Games" %}</a></li> <li><a href="{% url 'maistar-player-games' membership.username %}">{% trans "Mai-Star Games" %}</a></li>
</ul> </ul>{% endblock %}
{% endblock %}
{% block maincontent %} {% block maincontent %}{% if membership.avatar %}
{% if membership.avatar %} <img class="grid_3" src="{% thumbnail membership.avatar '220x220' crop='smart' %}" alt="{% trans 'Profile Image' %}"/>{% else %}
<img class="grid_3" src="{% thumbnail membership.avatar '220x220' crop='smart' %}" alt="{% trans 'Profile Image' %}"/> <div class="grid_3"> Noch kein Foto hoch geladen</div>{% endif %}
{% else %}
<div class="grid_3"> Noch kein Foto hoch geladen</div>
{% endif %}
<div class="grid_6"> <div class="{% if membership == user or perms.membership.change_membership%}grid_4{% else %}grid_9{% endif %}" >
<ul>
<li><strong>Name:</strong> {{membership.first_name}} {{membership.last_name}}</li>
<li><strong>{% trans "Member Since" %}:</strong> {{membership.date_joined}}</li>
<li><strong>{% trans "Last Login" %}:</strong> {{membership.last_login}}</li>
{% if website %}
<li><strong>Homepage:</strong> <a href="{{website}}">{{website}}</a></li>
{% endif %}
</ul>
{% if kyu_dan_ranking %} {% if kyu_dan_ranking %}
<h3>Mahjong</h3> <h3>Mahjong</h3>
<ul> <ul>
{% if kyu_dan_ranking.dan %} {% if kyu_dan_ranking.dan %}
<li> <li>
<strong>{{kyu_dan_ranking.dan}}. Dan: </strong> {{ kyu_dan_ranking.dan_points }} {% trans 'Points' %} <strong>{{kyu_dan_ranking.dan}}. Dan: </strong> {{ kyu_dan_ranking.dan_points }} {% trans 'Points' %} ({% trans 'Maximum' %}: {{ kyu_dan_ranking.max_dan_points }})
({% trans 'Maximum' %}: {{ kyu_dan_ranking.max_dan_points }})
</li> </li>
{% elif kyu_dan_ranking.kyu%} {% elif kyu_dan_ranking.kyu%}
<li><strong>{{kyu_dan_ranking.kyu}}. Kyu: </strong> {{ kyu_dan_ranking.kyu_points }} {% trans 'Points' %}</li> <li><strong>{{kyu_dan_ranking.kyu}}. Kyu: </strong> {{ kyu_dan_ranking.kyu_points }} {% trans 'Points' %}</li>
{% endif %} {% endif %}
<li><strong>{% trans 'Games Total' %}: </strong> {{ kyu_dan_ranking.hanchan_count }} Hanchans - <li>
{{kyu_dan_ranking.won_hanchans }} {% trans 'Won' %} / {{ kyu_dan_ranking.good_hanchans }} {% trans 'Good' %} <strong>{% trans 'Games Total' %}: </strong> {{ kyu_dan_ranking.hanchan_count }} Hanchans - {{kyu_dan_ranking.won_hanchans }} {% trans 'Won' %} / {{ kyu_dan_ranking.good_hanchans }} {% trans 'Good' %}
</li> </li>
<li><strong>{% trans 'Current Season' %}: </strong> {{ ladder_ranking.hanchan_count }} Hanchans - {{ ladder_ranking.won_hanchans }} {% trans 'Won' %} / {{ ladder_ranking.good_hanchans }} {% trans 'Good' %} <li>
<strong>{% trans 'Current Season' %}: </strong> {{ ladder_ranking.hanchan_count }} Hanchans - {{ ladder_ranking.won_hanchans }} {% trans 'Won' %} / {{ ladder_ranking.good_hanchans }} {% trans 'Good' %}
</li> </li>
</ul> </ul>
{% endif %} {% endif %}
</div> </div>
{% if membership == user or perms.membership.change_membership%}
<div class="grid_5">
<h3>{% trans 'private data' %}</h3>
<p>{% blocktrans %}This data can only be seen by yourself and members of the board.{% endblocktrans %} </p>
<ul>
{% if membership.first_name %}<li><strong>{% trans "name" %}:</strong> {{membership.first_name}} {{membership.last_name}}</li>{% endif %}
{% if membership.birthday %}<li><strong>{% trans "birthday" %}:</strong> {{membership.birthday}}</li>{% endif %}
{% if membership.street_name %}<li><strong>{% trans "Address" %}:</strong> <address>{{ membership.street_name }}<br/> {{ membership.post_code }} {{ membership.city }}</address></li>{% endif %}
{% if membership.email %}<li><strong>{% trans "Email" %}:</strong> <a href="mailto:{{ membership.email }}">{{membership.email}}</a></li>{% endif %}
{% if membership.telephone %}<li><strong>{% trans "Telephone" %}:</strong> <a href="tel:{{ membership.telephone }}">{{membership.telephone}}</a></li>{% endif %}
<li><strong>{% trans "Member Since" %}:</strong> {{membership.date_joined}}</li>
<li><strong>{% trans "Last Login" %}:</strong> {{membership.last_login}}</li>
</ul>
{% ifequal membership user %}
<a href="{% url 'membership-edit' membership.username %}" class="button"> <span class="fa fa-pencil"></span> {% trans "Edit Profile" %} </a>
<a href="{% url 'password_change' %}" class="button"> <span class="fa fa-key"></span> {% trans 'Change Password' %}</a>
{% endifequal %}
</div>
{% endif %}
{% ifequal membership user %}
<div class="grid_3">
<a href="{% url 'membership-edit' membership.username %}" class="button">
<span class="fa fa-pencil"></span>
{% trans "Edit Profile" %}
</a>
<a href="{% url 'password_change' %}" class="button">
<span class="fa fa-key"></span>
{% trans 'Change Password' %}
</a>
<a class="button" href="{% url 'social:begin' 'facebook' %}" rel="nofollow">
<span class="fa fa-facebook"></span>
{% blocktrans with 'Facebook' as name %}Associate with {{ name }}{% endblocktrans %}
</a>
<a class="button" href="{% url 'social:begin' 'twitter' %}" rel="nofollow">
<span class="fa fa-twitter"></span>
{% blocktrans with 'Twitter' as name %}Associate with {{ name }}{% endblocktrans %}
</a>
<a class="button" href="{% url 'social:begin' 'google-oauth2' %}" rel="nofollow">
<span class="fa fa-google-plus"></span>
{% blocktrans with 'Google' as name %}Associate with {{ name }}{% endblocktrans %}
</a>
</div>
{% endifequal %}
{% block score_list %} {% endblock %} {% block score_list %} {% endblock %}{% endblock %}
{% endblock %}
{% block comments %} {% block comments %}{% if membership %}{% render_comment_list for membership %}{% render_comment_form for membership %}{% endif %}{% endblock %}
{% if membership %}
{% render_comment_list for membership %}
{% render_comment_form for membership %}
{% endif %}
{% endblock %}
{% block buttonbar%}{%endblock%} {% block buttonbar%}{%endblock%}

View File

@@ -3,37 +3,25 @@
{% block title %}{% trans "Registration"%}{% endblock %} {% block title %}{% trans "Registration"%}{% endblock %}
{% block teaser%}
<h1>{% trans "Registration"%}</h1>
<div id="teaser_text">
{% blocktrans %}After you've provided your account data, you'll receive
an email asking you to verify your email address. You have to click on the
link in this verification email to confirm your email address, otherwise
your can't login.{% endblocktrans %}
</div>
{% endblock %}
{% block maincontent %} {% block maincontent %}
<form method="post" action="{% url 'membership-register' %}"> <form method="post" action="{% url 'membership-register' %}">
{% csrf_token %} {% csrf_token %}
<fieldset class="grid_5">
<legend>{% trans "name"%}</legend>
{% get_fieldset "gender, first_name, last_name, username" from form as form1 %}
{% with form1 as form %}{% include "form.html" %}{% endwith %}
</fieldset>
<fieldset class="grid_7"> <fieldset class="grid_7">
<legend>{% trans "login"%}</legend> <legend>{% trans "Login crendentials"%}</legend>
{% get_fieldset "email, password1, password2, recaptcha" from form as form1 %} {% get_fieldset "username, email, password1, password2, privacy_policy, recaptcha" from form as form1 %}
{% with form1 as form %}{% include "form.html" %}{% endwith %} {% with form1 as form %}{% include "form.html" %}{% endwith %}
</fieldset> </fieldset>
<fieldset class="grid_12"> <fieldset class="grid_5">
<legend>{% trans "Membership"%}</legend> <legend>{% trans "Club membership"%}</legend>
{% get_fieldset "membership, birthday, street_name, post_code, city, telephone, website" from form as form2 %} {% get_fieldset "membership, first_name, last_name, gender, birthday, street_name, post_code, city, telephone" from form as form2 %}
{% with form2 as form %}{% include "form.html" %}{% endwith %} {% with form2 as form %}{% include "form.html" %}{% endwith %}
</fieldset> </fieldset>
<div class="grid_12">
{{ current_page.content }}
</div>
<div class="grid_12"> <div class="grid_12">
<p class="buttonbar"> <p class="buttonbar">
<button type="reset"><span class="fa fa-undo"></span> {% trans 'reset' %} <button type="reset"><span class="fa fa-undo"></span> {% trans 'reset' %}
@@ -42,4 +30,18 @@
</p> </p>
</div> </div>
</form> </form>
<script type="text/javascript">
function togglePersonalData(event) {
var membership = document.getElementById("id_membership").checked;
var input_elements = ["id_first_name", "id_last_name", "id_gender", "id_birthday", "id_street_name", "id_post_code", "id_city", "id_telephone"];
for (var i = 0; i < input_elements.length; i++) {
element_id = input_elements[i]
element = document.getElementById(element_id);
element.disabled = !membership;
};
};
document.addEventListener('DOMContentLoaded',function() {document.querySelector('#id_membership').onchange=togglePersonalData;},false);
togglePersonalData();
</script>
{% endblock %} {% endblock %}

View File

@@ -0,0 +1,6 @@
{% extends "base.html" %}{% load i18n %}
{% block content %}
{{ current_page.content }}
{% endblock %}

View File

@@ -1,72 +1,32 @@
{% extends "base.html" %} {% extends "base.html" %}{% load i18n %}
{% load i18n %}
{% block title %}{% trans 'Login' %}{% endblock %}
{% block description %}Anmelden auf Kasu.at{% endblock %} {% block description %}Anmelden auf Kasu.at{% endblock %}
{% block extra_head %} {% block extra_head %}
<link rel="canonical" href="{% url 'login' %}"/> <link rel="canonical" href="{% url 'login' %}"/>{% endblock %}
{% endblock %}
{% block teaser %}<h1>{% trans 'Login' %}</h1>{% endblock %}
{% block maincontent %} {% block maincontent %}
<form method="post" action="{% url 'login' %}"> <form method="post" action="{% url 'login' %}">
<h2 class="grid_12">Auf der Seite Anmelden</h2> {% csrf_token %}
<div class="grid_6">
<div class="grid_7"> {{ current_page.content }}
<h2>{% trans "Have you already registered?" %}</h2>
{% blocktrans %}
<p>As a registered member you can:</p>
<ul>
<li>leave comments on this page.</li>
<li>subscribe to our Newsletter</li>
<li>apply to a membership to our club</li>
<li>club-members have access to our ranking-system</li>
</ul>
{% endblocktrans %}
{% blocktrans %}
<p>You can register here with your Google, or Facebook account.
If you don't own such an account, or do not want to use it for
authentication,
you can fill out our registration form.</p>
{% endblocktrans %}
<p class="buttonbar">
<a href="{% url 'membership-register' %}" class="button"><span
class="fa fa-user-plus"></span> {%trans "register"%}</a></p>
</div> </div>
<div class="grid_6">
<fieldset>
{% csrf_token %}
<fieldset class="grid_5">
<legend>{% trans 'login' %}</legend> <legend>{% trans 'login' %}</legend>
{% csrf_token %} {% csrf_token %} {% include 'form.html' %} {% if form.errors %}
{% include 'form.html' %} <p>{% blocktrans %}Your username and password didn't match. Please try again.{% endblocktrans %}</p>
{% if form.errors %} {% endif %} <input type="hidden" name="next" value="{{next}}"/>
<p>{% blocktrans %}Your username and password didn't match. Please try <p>
again.{% endblocktrans %}</p> <a href="{% url 'password_reset' %}"> {% trans 'Forgot your Password?'%}</a>
{% endif %} </p>
<input type="hidden" name="next" value="{{next}}"/>
<p><a href="{% url 'password_reset' %}">
{% trans 'Forgot your Password?'%}</a></p>
<div class="buttonbar"> <div class="buttonbar">
<button type="submit"><span class="fa fa-sign-in"></span> <button type="submit">
{% trans 'Login' %} <span class="fa fa-sign-in"></span> {% trans 'Login' %}
</button> </button>
</div> </div>
</fieldset> </fieldset>
<div class="grid_5">
<h2>{% trans "or login with an existing Account" %}</h2>
<a rel="nofollow" href="{% url 'social:begin' 'facebook' %}"><span
class="fa fa-facebook fa-5x"
title="{% trans 'Login with Facebook' %}"></span></a>
<a rel="nofollow" href="{% url 'social:begin' 'twitter' %}"><span
class="fa fa-twitter fa-5x"
title="{% trans 'Login with Twitter' %}"></span></a>
<a rel="nofollow" href="{% url 'social:begin' 'google-oauth2' %}"><span
class="fa fa-google-plus fa-5x"
title="{% trans 'Login with Google' %}"></span></a>
</div> </div>
</form> </form>
{% endblock %} {% endblock %}

View File

@@ -9,6 +9,7 @@ from django.conf.urls import url
from . import views from . import views
urlpatterns = [ urlpatterns = [
url(r'^$',views.MembershipDetail.as_view()),
url(r'^activate/(?P<activation_key>[\d\w]+)/$', url(r'^activate/(?P<activation_key>[\d\w]+)/$',
views.ActivateRegistration.as_view(), views.ActivateRegistration.as_view(),
name='membership-activate-registration'), name='membership-activate-registration'),

File diff suppressed because it is too large Load Diff