Merge branch 'master' into css3_redesign

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

View File

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

View File

@@ -1,14 +1,14 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import events.models
import django.db.models.deletion
from django.db import models, migrations
import events.models
import utils
class Migration(migrations.Migration):
dependencies = [
]
@@ -17,7 +17,8 @@ class Migration(migrations.Migration):
name='Event',
fields=[
('id', models.AutoField(verbose_name='ID',
serialize=False, auto_created=True, primary_key=True)),
serialize=False, auto_created=True,
primary_key=True)),
('name', models.CharField(max_length=255, verbose_name='Name')),
('description', models.TextField(
verbose_name='Beschreibung', blank=True)),
@@ -26,13 +27,20 @@ class Migration(migrations.Migration):
null=True, verbose_name='Ende', blank=True)),
('url', models.URLField(verbose_name='Homepage', blank=True)),
('image', models.ImageField(storage=utils.OverwriteStorage(
), upload_to=events.models.get_upload_path, null=True, verbose_name='Bild', blank=True)),
), upload_to=events.models.get_upload_path, null=True,
verbose_name='Bild', blank=True)),
('is_tournament', models.BooleanField(default=False,
help_text='Diese Veranstaltung ist ein Turnier, es gelten andere Regeln f\xfcr das Kyu Ranking.', verbose_name='Turnier')),
help_text='Diese Veranstaltung ist ein Turnier, es gelten andere Regeln f\xfcr das Kyu Ranking.',
verbose_name='Turnier')),
('photo_count', models.PositiveIntegerField(
default=0, editable=False)),
('event_series', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, editable=False, to='events.Event', blank=True,
help_text='Wenn dieser Termin zu einer Veranstaltungsreihe geh\xf6rt werden Ort, Beschreibung, Bild und Homepage von dem hier angegebenen Event \xfcbernommen.', null=True, verbose_name='Veranstaltungsreihen')),
('event_series',
models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL,
editable=False, to='events.Event',
blank=True,
help_text='Wenn dieser Termin zu einer Veranstaltungsreihe geh\xf6rt werden Ort, Beschreibung, Bild und Homepage von dem hier angegebenen Event \xfcbernommen.',
null=True,
verbose_name='Veranstaltungsreihen')),
],
options={
'ordering': ('-start', '-end'),
@@ -44,20 +52,310 @@ class Migration(migrations.Migration):
name='Location',
fields=[
('id', models.AutoField(verbose_name='ID',
serialize=False, auto_created=True, primary_key=True)),
serialize=False, auto_created=True,
primary_key=True)),
('name', models.CharField(max_length=200, verbose_name='Name')),
('description', models.TextField(
verbose_name='Beschreibung', blank=True)),
('image', models.ImageField(storage=utils.OverwriteStorage(
), upload_to=events.models.get_upload_path, null=True, verbose_name='Bild', blank=True)),
), upload_to=events.models.get_upload_path, null=True,
verbose_name='Bild', blank=True)),
('url', models.URLField(verbose_name='Homepage', blank=True)),
('postal_code', models.CharField(
max_length=6, verbose_name='Postleitzahl')),
('street_address', models.CharField(
max_length=127, verbose_name='Stra\xdfe')),
('locality', models.CharField(max_length=127, verbose_name='Ort')),
('country', models.CharField(max_length=2, verbose_name='Land', choices=[(b'GB', 'Vereinigtes K\xf6nigreich'), (b'AF', 'Afghanistan'), (b'AX', 'Aland Islands'), (b'AL', 'Albanien'), (b'DZ', 'Algerien'), (b'AS', 'Amerikanisch-Samoa'), (b'AD', 'Andorra'), (b'AO', 'Angola'), (b'AI', 'Anguilla'), (b'AQ', 'Antarktika'), (b'AG', 'Antigua und Barbuda'), (b'AR', 'Argentinien'), (b'AM', 'Armenien'), (b'AW', 'Aruba'), (b'AU', 'Australien'), (b'AT', '\xd6sterreich'), (b'AZ', 'Aserbaidschan'), (b'BS', 'Bahamas'), (b'BH', 'Bahrein'), (b'BD', 'Bangladesch'), (b'BB', 'Barbados'), (b'BY', 'Wei\xdfrussland'), (b'BE', 'Belgien'), (b'BZ', 'Belize'), (b'BJ', 'Benin'), (b'BM', 'Bermuda'), (b'BT', 'Bhutan'), (b'BO', 'Bolivien'), (b'BA', 'Bosnien und Herzegowina'), (b'BW', 'Botswana'), (b'BV', 'Bouvet Island'), (b'BR', 'Brasilien'), (b'IO', 'British Indian Ocean Territory'), (b'BN', 'Brunei Darussalam'), (b'BG', 'Bulgarien'), (b'BF', 'Burkina Faso'), (b'BI', 'Burundi'), (b'KH', 'Kambodscha'), (b'CM', 'Kamerun'), (b'CA', 'Kanada'), (b'CV', 'Cape Verde'), (b'KY', 'Cayman Islands'), (b'CF', 'Zentralafrikanische Republik'), (b'TD', 'Tschad'), (b'CL', 'Chile'), (b'CN', 'China'), (b'CX', 'Christmas Island'), (b'CC', 'Cocos (Keeling) Islands'), (b'CO', 'Kolumbien'), (b'KM', 'Komoren'), (b'CG', 'Kongo'), (b'CD', 'Kongo, Demokratische Republik'), (b'CK', 'Cook-Inseln'), (b'CR', 'Costa Rica'), (b'CI', "Cote d'Ivoire"), (b'HR', 'Kroatien'), (b'CU', 'Kuba'), (b'CY', 'Zypern'), (b'CZ', 'Tschechische Republik'), (b'DK', 'D\xe4nemark'), (b'DJ', 'Dschibuti'), (b'DM', 'Dominica'), (b'DO', 'Dominikanische Republik'), (b'EC', 'Ecuador'), (b'EG', '\xc4gypten'), (b'SV', 'El Salvador'), (b'GQ', '\xc4quatorial-Guinea'), (b'ER', 'Eritrea'), (b'EE', 'Estland'), (b'ET', '\xc4thiopien'), (b'FK', 'Falklandinseln (Malvinas)'), (b'FO', 'F\xe4r\xf6er-Inseln'), (b'FJ', 'Fidschi'), (b'FI', 'Finnland'), (b'FR', 'Frankreich'), (b'GF', 'Franz\xf6sisch-Guayana'), (b'PF', 'Franz\xf6sisch-Polynesien'), (b'TF', 'Franz\xf6sisch S\xfcdliche Territorien'), (b'GA', 'Gabun'), (b'GM', 'Gambia'), (b'GE', 'Georgia'), (b'DE', 'Deutschland'), (b'GH', 'Ghana'), (b'GI', 'Gibraltar'), (b'GR', 'Griechenland'), (b'GL', 'Gr\xf6nland'), (b'GD', 'Grenada'), (b'GP', 'Guadeloupe'), (b'GU', 'Guam'), (b'GT', 'Guatemala'), (b'GG', 'Guernsey'), (b'GN', 'Guinea'), (b'GW', 'Guinea-Bissau'), (b'GY', 'Guyana'), (b'HT', 'Haiti'), (b'HM', 'Heard und McDonald Inseln'), (b'VA', 'Heiliger Stuhl (Vatikanstadt)'), (b'HN', 'Honduras'), (b'HK', 'Hongkong'), (b'HU', 'Ungarn'), (b'IS', 'Island'), (b'IN', 'Indien'), (b'ID', 'Indonesien'), (b'IR', 'Iran, Islamische Republik'), (b'IQ', 'Irak'), (b'IE', 'Irland'), (b'IM', 'Isle of Man'), (b'IL', 'Israel'), (b'IT', 'Italien'), (b'JM', 'Jamaika'), (b'JP', 'Japan'), (b'JE', 'Jersey'), (b'JO', 'Jordan'), (b'KZ', 'Kasachstan'), (b'KE', 'Kenia'), (b'KI', 'Kiribati'), (b'KP', 'Korea, Demokratische Volksrepublik'), (b'KR', 'Korea, Republik'), (b'KW', 'Kuwait'), (b'KG', 'Kirgisistan'), (b'LA', 'Lao Demokratischen Volksrepublik'), (b'LV', 'Lettland'), (b'LB', 'Libanon'), (
b'LS', 'Lesotho'), (b'LR', 'Liberia'), (b'LY', 'Libyen'), (b'LI', 'Liechtenstein'), (b'LT', 'Litauen'), (b'LU', 'Luxemburg'), (b'MO', 'Macao'), (b'MK', 'Mazedonien, die ehemalige jugoslawische Republik'), (b'MG', 'Madagaskar'), (b'MW', 'Malawi'), (b'MY', 'Malaysia'), (b'MV', 'Malediven'), (b'ML', 'Mali'), (b'MT', 'Malta'), (b'MH', 'Marshall Islands'), (b'MQ', 'Martinique'), (b'MR', 'Mauretanien'), (b'MU', 'Mauritius'), (b'YT', 'Mayotte'), (b'MX', 'Mexiko'), (b'FM', 'Mikronesien, F\xf6derierte Staaten von'), (b'MD', 'Moldawien'), (b'MC', 'Monaco'), (b'MN', 'Mongolei'), (b'ME', 'Montenegro'), (b'MS', 'Montserrat'), (b'MA', 'Marokko'), (b'MZ', 'Mosambik'), (b'MM', 'Myanmar'), (b'NA', 'Namibia'), (b'NR', 'Nauru'), (b'NP', 'Nepal'), (b'NL', 'Niederlande'), (b'AN', 'Niederl\xe4ndische Antillen'), (b'NC', 'Neukaledonien'), (b'NZ', 'New Zealand'), (b'NI', 'Nicaragua'), (b'NE', 'Niger'), (b'NG', 'Nigeria'), (b'NU', 'Niue'), (b'NF', 'Norfolk Island'), (b'MP', 'Northern Mariana Islands'), (b'NO', 'Norwegen'), (b'OM', 'Oman'), (b'PK', 'Pakistan'), (b'PW', 'Palau'), (b'PS', 'Pal\xe4stinensische Autonomiegebiete'), (b'PA', 'Panama'), (b'PG', 'Papua-Neuguinea'), (b'PY', 'Paraguay'), (b'PE', 'Peru'), (b'PH', 'Philippinen'), (b'PN', 'Pitcairn'), (b'PL', 'Polen'), (b'PT', 'Portugal'), (b'PR', 'Puerto Rico'), (b'QA', 'Katar'), (b'RE', 'Wiedervereinigung'), (b'RO', 'Rum\xe4nien'), (b'RU', 'Russischen F\xf6deration'), (b'RW', 'Ruanda'), (b'BL', 'Saint Barthelemy'), (b'SH', 'Saint Helena'), (b'KN', 'Saint Kitts und Nevis'), (b'LC', 'Santa Lucia'), (b'MF', 'Santa Martin'), (b'PM', 'Saint Pierre und Miquelon'), (b'VC', 'Saint Vincent und die Grenadinen'), (b'WS', 'Samoa'), (b'SM', 'San Marino'), (b'ST', 'Sao Tome und Principe'), (b'SA', 'Saudi-Arabien'), (b'SN', 'Senegal'), (b'RS', 'Serbien'), (b'SC', 'Seychellen'), (b'SL', 'Sierra Leone'), (b'SG', 'Singapur'), (b'SK', 'Slowakei'), (b'SI', 'Slowenien'), (b'SB', 'Salomon-Inseln'), (b'SO', 'Somalia'), (b'ZA', 'S\xfcdafrika'), (b'GS', 'S\xfcdgeorgien und die S\xfcdlichen Sandwichinseln'), (b'ES', 'Spanien'), (b'LK', 'Sri Lanka'), (b'SD', 'Sudan'), (b'SR', 'Suriname'), (b'SJ', 'Svalbard und Jan Mayen'), (b'SZ', 'Swaziland'), (b'SE', 'Schweden'), (b'CH', 'Schweiz'), (b'SY', 'Arabische Republik Syrien'), (b'TW', 'Taiwan, Province of China'), (b'TJ', 'Tadschikistan'), (b'TZ', 'Tansania, Vereinigte Republik'), (b'TH', 'Thailand'), (b'TL', 'Timor-Leste'), (b'TG', 'Togo'), (b'TK', 'Tokelau'), (b'TO', 'Tonga'), (b'TT', 'Trinidad und Tobago'), (b'TN', 'Tunesien'), (b'TR', 'T\xfcrkei'), (b'TM', 'Turkmenistan'), (b'TC', 'Turks-und Caicosinseln'), (b'TV', 'Tuvalu'), (b'UG', 'Uganda'), (b'UA', 'Ukraine'), (b'AE', 'Vereinigte Arabische Emirate'), (b'US', 'Vereinigte Staaten'), (b'UM', 'United States Minor Outlying Islands'), (b'UY', 'Uruguay'), (b'UZ', 'Usbekistan'), (b'VU', 'Vanuatu'), (b'VE', 'Venezuela'), (b'VN', 'Vietnam'), (b'VG', 'Virgin Islands, British'), (b'VI', 'Virgin Islands, US'), (b'WF', 'Wallis und Futuna'), (b'EH', 'Westsahara'), (b'YE', 'Jemen'), (b'ZM', 'Sambia'), (b'ZW', 'Zimbabwe')])),
('locality',
models.CharField(max_length=127, verbose_name='Ort')),
('country', models.CharField(max_length=2, verbose_name='Land',
choices=[(b'GB',
'Vereinigtes K\xf6nigreich'),
(b'AF', 'Afghanistan'),
(b'AX', 'Aland Islands'),
(b'AL', 'Albanien'),
(b'DZ', 'Algerien'), (
b'AS',
'Amerikanisch-Samoa'),
(b'AD', 'Andorra'),
(b'AO', 'Angola'),
(b'AI', 'Anguilla'),
(b'AQ', 'Antarktika'), (
b'AG',
'Antigua und Barbuda'),
(b'AR', 'Argentinien'),
(b'AM', 'Armenien'),
(b'AW', 'Aruba'),
(b'AU', 'Australien'),
(b'AT', '\xd6sterreich'),
(b'AZ', 'Aserbaidschan'),
(b'BS', 'Bahamas'),
(b'BH', 'Bahrein'),
(b'BD', 'Bangladesch'),
(b'BB', 'Barbados'), (
b'BY',
'Wei\xdfrussland'),
(b'BE', 'Belgien'),
(b'BZ', 'Belize'),
(b'BJ', 'Benin'),
(b'BM', 'Bermuda'),
(b'BT', 'Bhutan'),
(b'BO', 'Bolivien'), (
b'BA',
'Bosnien und Herzegowina'),
(b'BW', 'Botswana'),
(b'BV', 'Bouvet Island'),
(b'BR', 'Brasilien'), (
b'IO',
'British Indian Ocean Territory'),
(b'BN',
'Brunei Darussalam'),
(b'BG', 'Bulgarien'),
(b'BF', 'Burkina Faso'),
(b'BI', 'Burundi'),
(b'KH', 'Kambodscha'),
(b'CM', 'Kamerun'),
(b'CA', 'Kanada'),
(b'CV', 'Cape Verde'),
(b'KY', 'Cayman Islands'),
(b'CF',
'Zentralafrikanische Republik'),
(b'TD', 'Tschad'),
(b'CL', 'Chile'),
(b'CN', 'China'), (b'CX',
'Christmas Island'),
(b'CC',
'Cocos (Keeling) Islands'),
(b'CO', 'Kolumbien'),
(b'KM', 'Komoren'),
(b'CG', 'Kongo'), (b'CD',
'Kongo, Demokratische Republik'),
(b'CK', 'Cook-Inseln'),
(b'CR', 'Costa Rica'),
(b'CI', "Cote d'Ivoire"),
(b'HR', 'Kroatien'),
(b'CU', 'Kuba'),
(b'CY', 'Zypern'), (b'CZ',
'Tschechische Republik'),
(b'DK', 'D\xe4nemark'),
(b'DJ', 'Dschibuti'),
(b'DM', 'Dominica'), (
b'DO',
'Dominikanische Republik'),
(b'EC', 'Ecuador'),
(b'EG', '\xc4gypten'),
(b'SV', 'El Salvador'), (
b'GQ',
'\xc4quatorial-Guinea'),
(b'ER', 'Eritrea'),
(b'EE', 'Estland'),
(b'ET', '\xc4thiopien'), (
b'FK',
'Falklandinseln (Malvinas)'),
(b'FO',
'F\xe4r\xf6er-Inseln'),
(b'FJ', 'Fidschi'),
(b'FI', 'Finnland'),
(b'FR', 'Frankreich'), (
b'GF',
'Franz\xf6sisch-Guayana'),
(b'PF',
'Franz\xf6sisch-Polynesien'),
(b'TF',
'Franz\xf6sisch S\xfcdliche Territorien'),
(b'GA', 'Gabun'),
(b'GM', 'Gambia'),
(b'GE', 'Georgia'),
(b'DE', 'Deutschland'),
(b'GH', 'Ghana'),
(b'GI', 'Gibraltar'),
(b'GR', 'Griechenland'),
(b'GL', 'Gr\xf6nland'),
(b'GD', 'Grenada'),
(b'GP', 'Guadeloupe'),
(b'GU', 'Guam'),
(b'GT', 'Guatemala'),
(b'GG', 'Guernsey'),
(b'GN', 'Guinea'),
(b'GW', 'Guinea-Bissau'),
(b'GY', 'Guyana'),
(b'HT', 'Haiti'), (b'HM',
'Heard und McDonald Inseln'),
(b'VA',
'Heiliger Stuhl (Vatikanstadt)'),
(b'HN', 'Honduras'),
(b'HK', 'Hongkong'),
(b'HU', 'Ungarn'),
(b'IS', 'Island'),
(b'IN', 'Indien'),
(b'ID', 'Indonesien'), (
b'IR',
'Iran, Islamische Republik'),
(b'IQ', 'Irak'),
(b'IE', 'Irland'),
(b'IM', 'Isle of Man'),
(b'IL', 'Israel'),
(b'IT', 'Italien'),
(b'JM', 'Jamaika'),
(b'JP', 'Japan'),
(b'JE', 'Jersey'),
(b'JO', 'Jordan'),
(b'KZ', 'Kasachstan'),
(b'KE', 'Kenia'),
(b'KI', 'Kiribati'), (
b'KP',
'Korea, Demokratische Volksrepublik'),
(
b'KR',
'Korea, Republik'),
(b'KW', 'Kuwait'),
(b'KG', 'Kirgisistan'), (
b'LA',
'Lao Demokratischen Volksrepublik'),
(b'LV', 'Lettland'),
(b'LB', 'Libanon'), (
b'LS', 'Lesotho'),
(b'LR', 'Liberia'),
(b'LY', 'Libyen'),
(b'LI', 'Liechtenstein'),
(b'LT', 'Litauen'),
(b'LU', 'Luxemburg'),
(b'MO', 'Macao'), (b'MK',
'Mazedonien, die ehemalige jugoslawische Republik'),
(b'MG', 'Madagaskar'),
(b'MW', 'Malawi'),
(b'MY', 'Malaysia'),
(b'MV', 'Malediven'),
(b'ML', 'Mali'),
(b'MT', 'Malta'), (b'MH',
'Marshall Islands'),
(b'MQ', 'Martinique'),
(b'MR', 'Mauretanien'),
(b'MU', 'Mauritius'),
(b'YT', 'Mayotte'),
(b'MX', 'Mexiko'), (b'FM',
'Mikronesien, F\xf6derierte Staaten von'),
(b'MD', 'Moldawien'),
(b'MC', 'Monaco'),
(b'MN', 'Mongolei'),
(b'ME', 'Montenegro'),
(b'MS', 'Montserrat'),
(b'MA', 'Marokko'),
(b'MZ', 'Mosambik'),
(b'MM', 'Myanmar'),
(b'NA', 'Namibia'),
(b'NR', 'Nauru'),
(b'NP', 'Nepal'),
(b'NL', 'Niederlande'), (
b'AN',
'Niederl\xe4ndische Antillen'),
(b'NC', 'Neukaledonien'),
(b'NZ', 'New Zealand'),
(b'NI', 'Nicaragua'),
(b'NE', 'Niger'),
(b'NG', 'Nigeria'),
(b'NU', 'Niue'),
(b'NF', 'Norfolk Island'),
(b'MP',
'Northern Mariana Islands'),
(b'NO', 'Norwegen'),
(b'OM', 'Oman'),
(b'PK', 'Pakistan'),
(b'PW', 'Palau'), (b'PS',
'Pal\xe4stinensische Autonomiegebiete'),
(b'PA', 'Panama'), (
b'PG',
'Papua-Neuguinea'),
(b'PY', 'Paraguay'),
(b'PE', 'Peru'),
(b'PH', 'Philippinen'),
(b'PN', 'Pitcairn'),
(b'PL', 'Polen'),
(b'PT', 'Portugal'),
(b'PR', 'Puerto Rico'),
(b'QA', 'Katar'), (b'RE',
'Wiedervereinigung'),
(b'RO', 'Rum\xe4nien'), (
b'RU',
'Russischen F\xf6deration'),
(b'RW', 'Ruanda'), (b'BL',
'Saint Barthelemy'),
(b'SH', 'Saint Helena'), (
b'KN',
'Saint Kitts und Nevis'),
(b'LC', 'Santa Lucia'),
(b'MF', 'Santa Martin'), (
b'PM',
'Saint Pierre und Miquelon'),
(b'VC',
'Saint Vincent und die Grenadinen'),
(b'WS', 'Samoa'),
(b'SM', 'San Marino'), (
b'ST',
'Sao Tome und Principe'),
(b'SA', 'Saudi-Arabien'),
(b'SN', 'Senegal'),
(b'RS', 'Serbien'),
(b'SC', 'Seychellen'),
(b'SL', 'Sierra Leone'),
(b'SG', 'Singapur'),
(b'SK', 'Slowakei'),
(b'SI', 'Slowenien'),
(b'SB', 'Salomon-Inseln'),
(b'SO', 'Somalia'),
(b'ZA', 'S\xfcdafrika'), (
b'GS',
'S\xfcdgeorgien und die S\xfcdlichen Sandwichinseln'),
(b'ES', 'Spanien'),
(b'LK', 'Sri Lanka'),
(b'SD', 'Sudan'),
(b'SR', 'Suriname'), (
b'SJ',
'Svalbard und Jan Mayen'),
(b'SZ', 'Swaziland'),
(b'SE', 'Schweden'),
(b'CH', 'Schweiz'), (
b'SY',
'Arabische Republik Syrien'),
(b'TW',
'Taiwan, Province of China'),
(b'TJ', 'Tadschikistan'),
(b'TZ',
'Tansania, Vereinigte Republik'),
(b'TH', 'Thailand'),
(b'TL', 'Timor-Leste'),
(b'TG', 'Togo'),
(b'TK', 'Tokelau'),
(b'TO', 'Tonga'), (b'TT',
'Trinidad und Tobago'),
(b'TN', 'Tunesien'),
(b'TR', 'T\xfcrkei'),
(b'TM', 'Turkmenistan'), (
b'TC',
'Turks-und Caicosinseln'),
(b'TV', 'Tuvalu'),
(b'UG', 'Uganda'),
(b'UA', 'Ukraine'), (
b'AE',
'Vereinigte Arabische Emirate'),
(b'US',
'Vereinigte Staaten'), (
b'UM',
'United States Minor Outlying Islands'),
(b'UY', 'Uruguay'),
(b'UZ', 'Usbekistan'),
(b'VU', 'Vanuatu'),
(b'VE', 'Venezuela'),
(b'VN', 'Vietnam'), (
b'VG',
'Virgin Islands, British'),
(b'VI',
'Virgin Islands, US'), (
b'WF',
'Wallis und Futuna'),
(b'EH', 'Westsahara'),
(b'YE', 'Jemen'),
(b'ZM', 'Sambia'),
(b'ZW', 'Zimbabwe')])),
],
options={
'verbose_name': 'Veranstaltungsort',
@@ -67,6 +365,8 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='event',
name='location',
field=models.ForeignKey(to='events.Location'),
field=models.ForeignKey(
to='events.Location',
on_delete=models.CASCADE),
),
]

View File

@@ -1,17 +1,17 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import ckeditor.fields
import events.models
import easy_thumbnails.fields
import django.db.models.deletion
import utils
import easy_thumbnails.fields
from django.conf import settings
from django.db import models, migrations
import events.models
import utils
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('events', '0003_auto_20150823_2232'),
@@ -22,18 +22,24 @@ class Migration(migrations.Migration):
name='Photo',
fields=[
('id', models.AutoField(verbose_name='ID',
serialize=False, auto_created=True, primary_key=True)),
serialize=False, auto_created=True,
primary_key=True)),
('name', models.CharField(max_length=100,
verbose_name='Name', blank=True)),
('image', easy_thumbnails.fields.ThumbnailerImageField(
upload_to=events.models.get_upload_path, storage=utils.OverwriteStorage(), verbose_name='Bild')),
upload_to=events.models.get_upload_path,
storage=utils.OverwriteStorage(), verbose_name='Bild')),
('description', models.TextField(max_length=300,
verbose_name='Beschreibung', blank=True)),
verbose_name='Beschreibung',
blank=True)),
('on_startpage', models.BooleanField(default=False,
help_text='Display this Photo on the Startpage Teaser', verbose_name='Startpage')),
('created_date', models.DateTimeField(verbose_name='Published on')),
help_text='Display this Photo on the Startpage Teaser',
verbose_name='Startpage')),
('created_date',
models.DateTimeField(verbose_name='Published on')),
('views', models.PositiveIntegerField(default=0,
verbose_name='Number of views', editable=False)),
verbose_name='Number of views',
editable=False)),
],
options={
'ordering': ['created_date'],
@@ -46,7 +52,8 @@ class Migration(migrations.Migration):
migrations.AlterModelOptions(
name='event',
options={'ordering': (
'start', 'end'), 'verbose_name': 'Termin', 'verbose_name_plural': 'Termine'},
'start', 'end'), 'verbose_name': 'Termin',
'verbose_name_plural': 'Termine'},
),
migrations.AlterField(
model_name='event',
@@ -57,14 +64,19 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='event',
name='event_series',
field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='events.Event',
help_text='Wenn dieser Termin zu einer Veranstaltungsreihe geh\xf6rt werden Ort, Beschreibung, Bild und Homepage von dem hier angegebenen Event \xfcbernommen.', null=True, verbose_name='Veranstaltungsreihen'),
field=models.ForeignKey(
on_delete=django.db.models.deletion.SET_NULL, blank=True,
to='events.Event',
help_text='Wenn dieser Termin zu einer Veranstaltungsreihe geh\xf6rt werden Ort, Beschreibung, Bild und Homepage von dem hier angegebenen Event \xfcbernommen.',
null=True, verbose_name='Veranstaltungsreihen'),
),
migrations.AlterField(
model_name='event',
name='image',
field=easy_thumbnails.fields.ThumbnailerImageField(storage=utils.OverwriteStorage(
), upload_to=events.models.get_upload_path, null=True, verbose_name='Bild', blank=True),
field=easy_thumbnails.fields.ThumbnailerImageField(
storage=utils.OverwriteStorage(
), upload_to=events.models.get_upload_path, null=True,
verbose_name='Bild', blank=True),
),
migrations.AlterField(
model_name='location',
@@ -75,17 +87,21 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='location',
name='image',
field=easy_thumbnails.fields.ThumbnailerImageField(storage=utils.OverwriteStorage(
), upload_to=events.models.get_upload_path, null=True, verbose_name='Bild', blank=True),
field=easy_thumbnails.fields.ThumbnailerImageField(
storage=utils.OverwriteStorage(
), upload_to=events.models.get_upload_path, null=True,
verbose_name='Bild', blank=True),
),
migrations.AddField(
model_name='photo',
name='event',
field=models.ForeignKey(to='events.Event'),
field=models.ForeignKey(
to='events.Event', on_delete=models.CASCADE),
),
migrations.AddField(
model_name='photo',
name='photographer',
field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
field=models.ForeignKey(
to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE),
),
]

View File

@@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.8 on 2017-12-14 11:15
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('events', '0008_auto_20171115_0653'),
]
operations = [
migrations.AlterField(
model_name='event',
name='location',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='events.Location'),
),
migrations.AlterField(
model_name='photo',
name='event',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='events.Event'),
),
migrations.AlterField(
model_name='photo',
name='photographer',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
),
]

View File

@@ -1,6 +1,6 @@
"""Mixins for Events."""
from django.http import Http404
from django.shortcuts import get_object_or_404
from . import models
@@ -34,12 +34,14 @@ class EventDetailMixin(object):
:return: TemplateContext object"""
context = super(EventDetailMixin, self).get_context_data(**kwargs)
if hasattr(self, 'event') and self.event:
if hasattr(self, 'event'):
context['event'] = self.event
elif hasattr(self, 'object') and isinstance(self.object, models.Event):
context['event'] = self.object
elif hasattr(self, 'object') and hasattr(self.object, 'event'):
context['event'] = self.object.event
else:
print("No Event in Context!")
return context
def get_queryset(self):
@@ -49,10 +51,9 @@ class EventDetailMixin(object):
:return: a django QuerySets
"""
if self.model == models.Event:
return models.Event.objects.all()
try:
self.event = models.Event.objects.get(pk=self.kwargs['event'])
self.event = get_object_or_404(models.Event, pk=self.kwargs['pk'])
queryset = self.model.objects.all()
else:
self.event = get_object_or_404(models.Event, pk=self.kwargs['event'])
queryset = self.model.objects.filter(event=self.event)
except models.Event.DoesNotExist:
raise Http404(_('Event does not exist'))
return queryset.prefetch_related()

View File

@@ -4,10 +4,10 @@ import os
from ckeditor.fields import RichTextField
from django.conf import settings
from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse
from django.db import models
from django.db.models import Q
from django.template.defaultfilters import slugify
from django.urls import reverse
from django.utils.timezone import now
from django.utils.translation import ugettext as _
from easy_thumbnails.fields import ThumbnailerImageField
@@ -51,7 +51,7 @@ class Event(models.Model):
"""An Event that could be a tournament, a game session, or an convention."""
name = models.CharField(_('Name'), max_length=255)
description = RichTextField(_("Description"), blank=True)
location = models.ForeignKey('Location')
location = models.ForeignKey('Location', on_delete=models.PROTECT)
start = models.DateTimeField(_('Start'))
end = models.DateTimeField(_('End'), blank=True, null=True)
url = models.URLField(_('Homepage'), blank=True)
@@ -220,13 +220,14 @@ class Photo(models.Model):
upload_to=get_upload_path,
storage=OverwriteStorage()
)
event = models.ForeignKey('events.Event')
event = models.ForeignKey('events.Event', on_delete=models.PROTECT, )
description = models.TextField(
_("Description"),
max_length=300,
blank=True
)
photographer = models.ForeignKey(settings.AUTH_USER_MODEL)
photographer = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.PROTECT)
on_startpage = models.BooleanField(
_("Startpage"),
default=False,

View File

@@ -41,5 +41,4 @@
{% if forloop.counter|divisibleby:2 %}<br class="clear">{% endif %}
{% endfor %}
{% endfor %}
{% if page_obj.has_other_pages %}{% include 'paginator.html' %}{% endif %}
{% endblock %}

View File

@@ -3,7 +3,7 @@ from datetime import timedelta
from django.contrib.auth import get_user_model
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.db.models import Q
from django.http import HttpResponse, Http404
from django.shortcuts import redirect