refactor: move all specific configurations to settings

v1-0-stable
Christian Merten 3 years ago
parent 175311eccd
commit 33a07f8730
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-17 23:19+0100\n"
"POT-Creation-Date: 2023-03-20 18:48+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,12 +18,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: admin.py:69
#: finance/admin.py:69
#, python-format
msgid "%(name)s is already submitted."
msgstr "%(name)s ist bereits eingereicht."
#: admin.py:75
#: finance/admin.py:75
#, python-format
msgid ""
"Successfully submited %(name)s. The finance department will notify the "
@ -32,23 +32,23 @@ msgstr ""
"Rechnung %(name)s erfolgreich eingereicht. Das Finanzreferat wird auf dich "
"sobald wie möglich zukommen."
#: admin.py:78
#: finance/admin.py:78
msgid "Submit statement"
msgstr "Rechnung einreichen"
#: admin.py:152
#: finance/admin.py:152
#, python-format
msgid "%(name)s is not yet submitted."
msgstr "%(name)s ist noch nicht eingereicht."
#: admin.py:159
#: finance/admin.py:159
#, python-format
msgid "An error occured while trying to confirm %(name)s. Please try again."
msgstr ""
"Beim Abwickeln von %(name)s ist ein Fehler aufgetreten. Bitte versuche es "
"erneut."
#: admin.py:163
#: finance/admin.py:163
#, python-format
msgid ""
"Successfully confirmed %(name)s. I hope you executed the associated "
@ -57,11 +57,11 @@ msgstr ""
"Erfolgreich %(name)s abgewickelt. Ich hoffe du hast die zugehörigen "
"Überweisungen ausgeführt, ich werde dich nicht nochmal erinnern."
#: admin.py:170
#: finance/admin.py:170
msgid "Statement confirmed"
msgstr "Abrechnung abgewickelt"
#: admin.py:176
#: finance/admin.py:176
msgid ""
"Transactions do not match the covered expenses. Please correct the mistakes "
"listed below."
@ -69,19 +69,19 @@ msgstr ""
"Überweisungen stimmen nicht mit den übernommenen Kosten überein. Bitte "
"korrigiere die unten aufgeführten Fehler."
#: admin.py:181
#: finance/admin.py:181
msgid "Some transactions have no ledger configured. Please fill in the gaps."
msgstr ""
"Manche Überweisungen haben kein Geldtopf eingestellt. Bitte trage das nach."
#: admin.py:190
#: finance/admin.py:190
#, python-format
msgid "Successfully rejected %(name)s. The requestor can reapply, when needed."
msgstr ""
"Die Rechnung %(name)s wurde abgelehnt. Die Person kann die Rechnung erneut "
"einstellen, wenn es benötigt wird."
#: admin.py:197
#: finance/admin.py:197
#, python-format
msgid ""
"%(name)s already has transactions. Please delete them first, if you want to "
@ -90,194 +90,198 @@ msgstr ""
"%(name)s hat bereits Überweisungen. Bitte lösche diese zunächst, bevor du "
"neue generierst."
#: admin.py:201
#: finance/admin.py:201
#, python-format
msgid "Successfully generated transactions for %(name)s"
msgstr "Automatisch Überweisungsträger für %(name)s generiert."
#: admin.py:204
#: finance/admin.py:204
msgid "View submitted statement"
msgstr "Eingereichte Abrechnung einsehen"
#: admin.py:230
#: finance/admin.py:230
#, python-format
msgid "Successfully reduced transactions for %(name)s."
msgstr "Überweisungsträger für %(name)s minimiert."
#: apps.py:8
#: finance/apps.py:8
msgid "Finance"
msgstr "Finanzen"
#: models.py:13
#: finance/models.py:13
msgid "Name"
msgstr "Name"
#: models.py:19 models.py:352 models.py:376
#: templates/admin/confirmed_statement.html:38
#: templates/admin/overview_submitted_statement.html:100
#: finance/models.py:19 finance/models.py:372 finance/models.py:396
#: finance/templates/admin/confirmed_statement.html:38
#: finance/templates/admin/overview_submitted_statement.html:100
msgid "Ledger"
msgstr "Geldtopf"
#: models.py:20
#: finance/models.py:20
msgid "Ledgers"
msgstr "Geldtöpfe"
#: models.py:42 models.py:323 models.py:375
#: finance/models.py:42 finance/models.py:343 finance/models.py:395
msgid "Short description"
msgstr "Kurzbeschreibung"
#: models.py:45 models.py:324
#: finance/models.py:45 finance/models.py:344
msgid "Explanation"
msgstr "Erklärung"
#: models.py:47
#: finance/models.py:47
msgid "Associated excursion"
msgstr "Zugehörige Freizeit"
#: models.py:52
#: finance/models.py:52
msgid "Price per night"
msgstr "Preis pro Nacht"
#: models.py:54
#: finance/models.py:54
msgid "Submitted"
msgstr "Eingericht"
#: models.py:55
#: finance/models.py:55
msgid "Submitted on"
msgstr "Eingereicht am"
#: models.py:56
#: finance/models.py:56
msgid "Confirmed"
msgstr "Abgewickelt"
#: models.py:57 models.py:359
#: finance/models.py:57 finance/models.py:379
msgid "Paid on"
msgstr "Bezahlt am"
#: models.py:59
#: finance/models.py:59
msgid "Submitted by"
msgstr "Eingereicht bei"
#: models.py:64 models.py:360
#: finance/models.py:64 finance/models.py:380
msgid "Authorized by"
msgstr "Autorisiert von"
#: models.py:71 models.py:322 models.py:355
#: finance/models.py:71 finance/models.py:342 finance/models.py:375
msgid "Statement"
msgstr "Abrechnung"
#: models.py:72
#: finance/models.py:72
msgid "Statements"
msgstr "Abrechnungen"
#: models.py:77
#: finance/models.py:77
#, python-format
msgid "Statement: %(excursion)s"
msgstr "Abrechnung: %(excursion)s"
#: models.py:123
#: finance/models.py:123
msgid "Ready to confirm"
msgstr "Bereit zur Abwicklung"
#: models.py:162
#: finance/models.py:162
#, python-format
msgid "Compensation for %(excu)s"
msgstr "Entschädigung für %(excu)s"
#: models.py:274 templates/admin/overview_submitted_statement.html:78
#: finance/models.py:294
#: finance/templates/admin/overview_submitted_statement.html:78
msgid "Total"
msgstr "Gesamtbetrag"
#: models.py:287
#: finance/models.py:307
msgid "Statement in preparation"
msgstr "Abrechnung in Vorbereitung"
#: models.py:288
#: finance/models.py:308
msgid "Statements in preparation"
msgstr "Abrechnungen in Vorbereitung"
#: models.py:301
#: finance/models.py:321
msgid "Submitted statement"
msgstr "Eingereichte Abrechnung"
#: models.py:302
#: finance/models.py:322
msgid "Submitted statements"
msgstr "Eingereichte Abrechnungen"
#: models.py:316
#: finance/models.py:336
msgid "Paid statement"
msgstr "Bezahlte Abrechnung"
#: models.py:317
#: finance/models.py:337
msgid "Paid statements"
msgstr "Bezahlte Abrechnungen"
#: models.py:327
#: finance/models.py:347
msgid "Paid by"
msgstr "Bezahlt von"
#: models.py:329
#: finance/models.py:349
msgid "Covered"
msgstr "Übernommen"
#: models.py:330
#: finance/models.py:350
msgid "Refunded"
msgstr "Ausgezahlt"
#: models.py:332
#: finance/models.py:352
msgid "Proof"
msgstr "Beleg"
#: models.py:340 models.py:349 templates/admin/confirmed_statement.html:36
#: templates/admin/overview_submitted_statement.html:31
#: templates/admin/overview_submitted_statement.html:98
#: finance/models.py:360 finance/models.py:369
#: finance/templates/admin/confirmed_statement.html:36
#: finance/templates/admin/overview_submitted_statement.html:31
#: finance/templates/admin/overview_submitted_statement.html:98
msgid "Amount"
msgstr "Betrag"
#: models.py:343
#: finance/models.py:363
msgid "Bill"
msgstr "Quittung"
#: models.py:344 templates/admin/overview_submitted_statement.html:26
#: finance/models.py:364
#: finance/templates/admin/overview_submitted_statement.html:26
msgid "Bills"
msgstr "Quittungen"
#: models.py:348 templates/admin/confirmed_statement.html:37
#: templates/admin/overview_submitted_statement.html:99
#: finance/models.py:368 finance/templates/admin/confirmed_statement.html:37
#: finance/templates/admin/overview_submitted_statement.html:99
msgid "Reference"
msgstr "Verwendungszweck"
#: models.py:350
#: finance/models.py:370
msgid "Recipient"
msgstr "Empfänger"
#: models.py:358
#: finance/models.py:378
msgid "Paid"
msgstr "Bezahlt"
#: models.py:370
#: finance/models.py:390
msgid "Transaction"
msgstr "Überweisung"
#: models.py:371 templates/admin/overview_submitted_statement.html:84
#: finance/models.py:391
#: finance/templates/admin/overview_submitted_statement.html:84
msgid "Transactions"
msgstr "Überweisungen"
#: templates/admin/confirmed_statement.html:17
#: templates/admin/overview_submitted_statement.html:17
#: templates/admin/submit_statement.html:17
#: finance/templates/admin/confirmed_statement.html:17
#: finance/templates/admin/overview_submitted_statement.html:17
#: finance/templates/admin/submit_statement.html:17
msgid "Home"
msgstr "Start"
#: templates/admin/confirmed_statement.html:21
#: finance/templates/admin/confirmed_statement.html:21
msgid "Paiment"
msgstr "Bezahlung"
#: templates/admin/confirmed_statement.html:26
#: finance/templates/admin/confirmed_statement.html:26
msgid "Paying statement"
msgstr "Rechnung bezahlen"
#: templates/admin/confirmed_statement.html:29
#: finance/templates/admin/confirmed_statement.html:29
msgid ""
"The statement is valid. Please execute the following transactions and then "
"proceed by finalizing the confirmation."
@ -285,43 +289,43 @@ msgstr ""
"Die Abrechnung ist gültig. Bitte führe die folgenden Überweisungen aus und "
"fahre dann fort, indem du die Abwicklung bestätigst."
#: templates/admin/confirmed_statement.html:35
#: finance/templates/admin/confirmed_statement.html:35
msgid "IBAN"
msgstr "IBAN"
#: templates/admin/confirmed_statement.html:66
#: finance/templates/admin/confirmed_statement.html:66
msgid "I did execute the listed transactions."
msgstr "Ich habe die aufgeführten Überweisungen ausgeführt."
#: templates/admin/confirmed_statement.html:68
#: finance/templates/admin/confirmed_statement.html:68
msgid "Confirm"
msgstr "Bestätigen"
#: templates/admin/overview_submitted_statement.html:21
#: finance/templates/admin/overview_submitted_statement.html:21
msgid "Overview"
msgstr "Übersicht"
#: templates/admin/overview_submitted_statement.html:32
#: finance/templates/admin/overview_submitted_statement.html:32
msgid "Covered by association"
msgstr "Vom Verein übernommen"
#: templates/admin/overview_submitted_statement.html:50
#: finance/templates/admin/overview_submitted_statement.html:50
#, python-format
msgid "The total amount is %(total_bills)s €."
msgstr "Der Gesamtbetrag beträgt %(total_bills)s €."
#: templates/admin/overview_submitted_statement.html:54
#: finance/templates/admin/overview_submitted_statement.html:54
msgid "Excursion"
msgstr "Freizeit"
#: templates/admin/overview_submitted_statement.html:57
#: finance/templates/admin/overview_submitted_statement.html:57
#, python-format
msgid "This excursion featured %(staff_count)s youth leader(s), each costing"
msgstr ""
"Diese Freizeit hatte %(staff_count)s Jugendleiter:innen. Auf jede:n "
"entfallen die folgenden Kosten:"
#: templates/admin/overview_submitted_statement.html:62
#: finance/templates/admin/overview_submitted_statement.html:62
#, python-format
msgid ""
"%(nights)s nights for %(price_per_night)s€ per night making a total of "
@ -330,7 +334,7 @@ msgstr ""
"%(nights)s Nächte zum Preis von %(price_per_night)s€ pro Nacht. Das ergibt "
"eine Gesamtsumme von %(nights_per_yl)s€."
#: templates/admin/overview_submitted_statement.html:65
#: finance/templates/admin/overview_submitted_statement.html:65
#, python-format
msgid ""
"%(duration)s days for %(allowance_per_day)s€ per day making a total of "
@ -339,7 +343,7 @@ msgstr ""
"%(duration)s Tage für %(allowance_per_day)s€ pro Tag. Das ergibt eine "
"Gesamtsumme von %(allowance_per_yl)s€."
#: templates/admin/overview_submitted_statement.html:68
#: finance/templates/admin/overview_submitted_statement.html:68
#, python-format
msgid ""
"%(kilometers_traveled)s km by %(means_of_transport)s (%(euro_per_km)s € / "
@ -348,7 +352,7 @@ msgstr ""
"%(kilometers_traveled)s km mit %(means_of_transport)s (%(euro_per_km)s€ / "
"km). Das ergibt eine Gesamtsumme von %(transportation_per_yl)s€."
#: templates/admin/overview_submitted_statement.html:73
#: finance/templates/admin/overview_submitted_statement.html:73
#, python-format
msgid ""
"In total this is %(total_per_yl)s€ times %(staff_count)s, giving "
@ -357,12 +361,12 @@ msgstr ""
"Insgesamt sind das Kosten von %(total_per_yl)s€ mal %(staff_count)s, "
"insgesamt also %(total_staff)s€."
#: templates/admin/overview_submitted_statement.html:81
#: finance/templates/admin/overview_submitted_statement.html:81
#, python-format
msgid "This results in a total amount of %(total)s€"
msgstr "Das resultiert in einem Gesamtbetrag von %(total)s€"
#: templates/admin/overview_submitted_statement.html:87
#: finance/templates/admin/overview_submitted_statement.html:87
msgid ""
"Currently, no transactions are planned. You can auto generate them from the "
"data, by clicking the following button."
@ -370,19 +374,19 @@ msgstr ""
"Aktuell sind keine Überweisungen vorgesehen. Du kannst die erforderlichen "
"durch Klicken auf den folgenden Knopf generieren."
#: templates/admin/overview_submitted_statement.html:90
#: finance/templates/admin/overview_submitted_statement.html:90
msgid "Generate transactions"
msgstr "Erzeuge Überweisungsträger"
#: templates/admin/overview_submitted_statement.html:94
#: finance/templates/admin/overview_submitted_statement.html:94
msgid "Currently the following transactions are planned."
msgstr "Aktuell sind die folgenden Überweisungen vorgesehen."
#: templates/admin/overview_submitted_statement.html:137
#: finance/templates/admin/overview_submitted_statement.html:137
msgid "These transactions match the calculated costs."
msgstr "Diese Überweisungen stimmen mit den berechneten Kosten überein."
#: templates/admin/overview_submitted_statement.html:140
#: finance/templates/admin/overview_submitted_statement.html:140
msgid ""
"The current transactions do not reflect all costs in this statement. Please "
"fix the following issues:"
@ -390,41 +394,41 @@ msgstr ""
"Die aktuell vorgesehenen Überweisungen stimmen nicht mit den berechneten "
"Kosten überein. Bitte korrigiere die folgenden Fehler:"
#: templates/admin/overview_submitted_statement.html:145
#: finance/templates/admin/overview_submitted_statement.html:145
msgid "Currently receiving"
msgstr "Erhält aktuell"
#: templates/admin/overview_submitted_statement.html:146
#: finance/templates/admin/overview_submitted_statement.html:146
msgid "Actual costs"
msgstr "Tatsächliche Kosten"
#: templates/admin/overview_submitted_statement.html:147
#: finance/templates/admin/overview_submitted_statement.html:147
msgid "Difference"
msgstr "Differenz"
#: templates/admin/overview_submitted_statement.html:174
#: finance/templates/admin/overview_submitted_statement.html:174
msgid "Accept"
msgstr "Annehmen"
#: templates/admin/overview_submitted_statement.html:175
#: finance/templates/admin/overview_submitted_statement.html:175
msgid "Reject"
msgstr "Ablehnen"
#: templates/admin/overview_submitted_statement.html:178
#: templates/admin/submit_statement.html:35
#: finance/templates/admin/overview_submitted_statement.html:178
#: finance/templates/admin/submit_statement.html:35
msgid "Cancel"
msgstr "Abbruch"
#: templates/admin/submit_statement.html:21
#: templates/admin/submit_statement.html:34
#: finance/templates/admin/submit_statement.html:21
#: finance/templates/admin/submit_statement.html:34
msgid "Submit"
msgstr "Einreichen"
#: templates/admin/submit_statement.html:26
#: finance/templates/admin/submit_statement.html:26
msgid "Submit to the finance department"
msgstr "Beim Finanzreferat einreichen"
#: templates/admin/submit_statement.html:28
#: finance/templates/admin/submit_statement.html:28
msgid ""
"Do you want to submit the statement for further processing by the finance "
"department? If you proceed, no further changes to the statement are possible."

@ -183,7 +183,7 @@ EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'
# Celery Email Setup
CELERY_EMAIL_TASK_CONFIG = {
'rate_limit' : '1/m' # * CELERY_EMAIL_CHUNK_SIZE (default: 10)
'rate_limit' : '10/m' # * CELERY_EMAIL_CHUNK_SIZE (default: 10)
}
@ -262,3 +262,141 @@ PASSWORD_HASHERS = [
'django.contrib.auth.hashers.Argon2PasswordHasher',
'django.contrib.auth.hashers.ScryptPasswordHasher',
]
# mail texts
CONFIRM_MAIL_TEXT = """Hallo {name},
du hast bei der JDAV Ludwigsburg eine E-Mail Adresse hinterlegt. Da bei uns alle Kommunikation
per Email funktioniert, brauchen wir eine Bestätigung {whattoconfirm}. Dazu klicke bitte einfach auf
folgenden Link:
{link}
Viele Grüße
Deine JDAV Ludwigsburg"""
NEW_UNCONFIRMED_REGISTRATION = """Hallo {name},
für deine Gruppe {group} liegt eine neue unbestätigte Reservierung vor. Die Person hat bereits ihre
E-Mailadressen bestätigt. Bitte prüfe die Registrierung eingehend und bestätige falls möglich. Zu
der Registrierung kommst du hier:
{link}
Viele Grüße
Dein KOMPASS"""
INVITE_TEXT = """Hallo {name},
wir haben gute Neuigkeiten für dich. Es ist ein Platz in der Jugendgruppe freigeworden. Wir brauchen
jetzt noch ein paar Informationen von dir und deine Anmeldebestätigung. Das kannst du alles über folgenden
Link erledigen:
{link}
Du siehst dort auch die Daten, die du bei deiner Eintragung auf die Warteliste angegeben hast. Bitte
überprüfe, ob die Daten noch stimmen und ändere sie bei Bedarf ab.
Bei Fragen, wende dich gerne an jugendreferent@jdav-ludwigsburg.de.
Viele Grüße
Deine JDAV Ludwigsburg"""
WAIT_CONFIRMATION_TEXT = """Hallo {name},
leider können wir dir zur Zeit noch keinen Platz in einer Jugendgruppe anbieten. Da wir
sehr viele Interessenten haben und wir möglichst vielen die Möglichkeit bieten möchten, an
einer Jugendgruppe teilhaben zu können, fragen wir regelmäßig alle Personen auf der
Warteliste ab, ob sie noch Interesse haben.
Wenn du weiterhin auf der Warteliste bleiben möchtest, klicke auf den folgenden Link:
{link}
Falls du nicht mehr auf der Warteliste bleiben möchtest, musst du nichts machen. Du wirst automatisch entfernt.
Viele Grüße
Deine JDAV Ludwigsburg"""
UNSUBSCRIBE_CONFIRMATION_TEXT = """Klicke auf den Link, um dich vom Newsletter der JDAV Ludwigsburg abzumelden
{link}"""
NOTIFY_MOST_ACTIVE_TEXT = """Hallo {name}!
Herzlichen Glückwunsch, du hast im letzten Jahr zu den {congratulate_max} aktivsten
Mitgliedern der JDAV Ludwigsburg gehört! Um genau zu sein beträgt dein Aktivitäts Wert
des letzten Jahres {score} Punkte. Das entspricht {level} Kletterer:innen. Damit warst du
im letzten Jahr das {position}aktivste Mitglied der JDAV Ludwigsburg.
Auf ein weiteres aktives Jahr in der JDAV Ludwigsburg
Dein:e Jugendreferent:in"""
ECHO_TEXT = """Hallo {name},
um unsere Daten auf dem aktuellen Stand zu halten, brauchen wir eine
kurze Bestätigung von dir. Dafür besuche einfach diesen Link:
{link}
Dort kannst du deine Daten überprüfen und ändern. Falls du nicht innerhalb von
30 Tagen deine Daten bestätigst, wirst du aus unserer Datenbank gelöscht und
erhälst in Zukunft keine Mails mehr von uns.
Bei Fragen, wende dich gerne an jugendreferent@jdav-ludwigsburg.de.
Viele Grüße
Deine JDAV Ludwigsburg"""
PREPEND_INCOMPLETE_REGISTRATION_TEXT = """WICHTIGE MITTEILUNG
Deine Anmeldung ist aktuell nicht vollständig. Bitte fülle umgehend das
Anmeldeformular aus und lasse es Deine*r Jugendleiter*in zukommen! Dieses
kannst Du unter folgendem Link herunterladen:
https://cloud.jdav-ludwigsburg.de/index.php/s/NQfRqA9MTKfPBkC
****************
"""
MAIL_FOOTER = """
****************
Diese Email wurde über die Webseite der JDAV Ludwigsburg
verschickt. Wenn Du in Zukunft keine Emails mehr erhalten möchtest,
kannst Du hier den Newsletter deabonnieren:
{link}"""
# fixed email addresses
RESPONSIBLE_MAIL = "jugendreferent@jdav-ludwigsburg.de"
# contact data
SEKTION = "Ludwigsburg"
SEKTION_STREET = "Fuchshofstr. 66"
SEKTION_TOWN = "71638 Ludwigsburg"
SEKTION_TELEPHONE = "07141 927893"
SEKTION_TELEFAX = "07141 924042"
SEKTION_CONTACT_MAIL = "info@alpenverein-ludwigsburg.de"
# mailutils
HOST = os.environ.get('DJANGO_ALLOWED_HOST', 'localhost:8000').split(",")[0]
PROTOCOL = os.environ.get('DJANGO_PROTOCOL', 'https')
BASE_URL = os.environ.get('DJANGO_BASE_URL', HOST)
DEFAULT_SENDING_MAIL = os.environ.get('EMAIL_SENDING_ADDRESS', 'christian@localhost')
# misc
CONGRATULATE_MEMBERS_MAX = 10

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-17 23:10+0100\n"
"POT-Creation-Date: 2023-03-20 18:48+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -24,7 +24,7 @@ msgstr "Startseite"
#: templates/admin/finance/statementconfirmed/change_form_object_tools.html:8
msgid "Unconfirm"
msgstr ""
msgstr "Bestätigung zurücknehmen"
#: templates/admin/finance/statementsubmitted/change_form_object_tools.html:21
msgid "Reduce transactions"
@ -38,7 +38,19 @@ msgstr "Übersicht"
msgid "Submit"
msgstr "Einreichen"
#: templates/admin/members/freizeit/change_form_object_tools.html:8
#: templates/admin/members/freizeit/change_form_object_tools.html:9
msgid "Generate crisis intervention list"
msgstr "Kriseninterventionsliste erstellen"
#: templates/admin/members/freizeit/change_form_object_tools.html:16
msgid "Generate overview"
msgstr "Übersicht erstellen"
#: templates/admin/members/freizeit/change_form_object_tools.html:23
msgid "Generate seminar report"
msgstr "Seminarbericht erstellen"
#: templates/admin/members/freizeit/change_form_object_tools.html:29
msgid "Submit statement"
msgstr "Abrechnung einreichen"
@ -54,24 +66,3 @@ msgstr "Dateityp nicht unterstützt."
#: utils.py:28
msgid "Please keep filesize under {}. Current filesize: {}"
msgstr "Maximale Dateigröße {}. Aktuelle Dateigröße: {}."
#~ msgid "Welcome,"
#~ msgstr "Willkommen"
#~ msgid "Documentation"
#~ msgstr "Dokumentation"
#~ msgid "Change password"
#~ msgstr "Passwort ändern"
#~ msgid "Log out"
#~ msgstr "Abmelden"
#~ msgid "Home"
#~ msgstr "Start"
#~ msgid "View site"
#~ msgstr "Seite anzeigen"
#~ msgid "JDAV LB Administration"
#~ msgstr "JDAV LB Verwaltung"

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-12 17:38+0100\n"
"POT-Creation-Date: 2023-03-20 18:48+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -38,6 +38,11 @@ msgstr "Email wurde erfolgreich verschickt"
msgid "mailer"
msgstr "Verteiler"
#: mailer/management/commands/notify_active.py:38
#, python-format
msgid "Congratulation %(name)s"
msgstr "Herzlichen Glückwunsch %(name)s"
#: mailer/models.py:18
msgid "Only alphanumeric characters are allowed"
msgstr "Nur Buchstaben und Zahlen erlaubt"
@ -112,26 +117,26 @@ msgstr "Andere Teilnehmer"
msgid "recipients"
msgstr "Empfänger"
#: mailer/models.py:168
#: mailer/models.py:182
msgid "message"
msgstr "Nachricht"
#: mailer/models.py:169
#: mailer/models.py:183
msgid "messages"
msgstr "Nachrichten"
#: mailer/models.py:171
#: mailer/models.py:185
msgid "Can submit mails"
msgstr "Kann Mails verschicken"
#: mailer/models.py:187
#: mailer/models.py:201
msgid ""
"Either a group, a memberlist or at least one member is required as recipient"
msgstr ""
"Es muss entweder eine Gruppe, eine Teilnehmerliste oder mindestens ein "
"Teilnehmer als Empfänger ausgewählt werden."
#: mailer/models.py:192
#: mailer/models.py:206
msgid ""
"At least one reply-to recipient is required. Use the info mail if you really "
"want no reply-to recipient."
@ -139,19 +144,19 @@ msgstr ""
"Es muss mindestens ein Antwort-An Empfänger angegeben werden. Nutze die info "
"Email-Adresse falls du wirklich keinen Antwort-An Empfänger haben möchtest."
#: mailer/models.py:199
#: mailer/models.py:213
msgid "file"
msgstr "Datei"
#: mailer/models.py:205
#: mailer/models.py:219
msgid "Empty"
msgstr "Leer"
#: mailer/models.py:208
#: mailer/models.py:222
msgid "attachment"
msgstr "Anhang"
#: mailer/models.py:209
#: mailer/models.py:223
msgid "attachments"
msgstr "Anhänge"
@ -232,7 +237,7 @@ msgstr "Vorname"
msgid "Lastname"
msgstr "Nachname"
#: mailer/templates/mailer/subscribe.html:26 mailer/views.py:61
#: mailer/templates/mailer/subscribe.html:26 mailer/views.py:59
msgid "Birthdate"
msgstr "Geburtsdatum"
@ -265,31 +270,14 @@ msgstr "Ungültiger Link. Bitte nochmal versuchen!"
msgid "Please fill in every field"
msgstr "Bitte jedes Feld ausfüllen!"
#: mailer/views.py:84
#: mailer/views.py:49
msgid "Unsubscription confirmation"
msgstr "Abmeldebestätigung"
#: mailer/views.py:82
msgid "Please fill in every field!"
msgstr "Bitte jedes Feld ausfüllen!"
#: mailer/views.py:91
#: mailer/views.py:89
msgid "Member already exists"
msgstr "Mitglied schon vorhanden"
#~ msgid "reply to"
#~ msgstr "Antwort an"
#~ msgid "Message sent"
#~ msgstr "Nachricht gesendet"
#~ msgid "from email"
#~ msgstr "Von Email"
#~ msgid "Confirmation of unsubscription"
#~ msgstr "Abmeldebestätigung"
#~ msgid ""
#~ "Click the link to unsubscribe to the newsletter of the JDAV\n"
#~ "{}"
#~ msgstr ""
#~ "Klicke auf den Link um dich von Newsletter des JDAV Ludwigsburg abzumelden"
#~ msgid "History"
#~ msgstr "Geschichte"

@ -1,13 +1,10 @@
from django.core import mail
from django.core.mail import EmailMessage
from django.conf import settings
import os
NOT_SENT, SENT, PARTLY_SENT = 0, 1, 2
HOST = os.environ.get('DJANGO_ALLOWED_HOST', 'localhost:8000').split(",")[0]
PROTOCOL = os.environ.get('DJANGO_PROTOCOL', 'https')
BASE_URL = os.environ.get('DJANGO_BASE_URL', HOST)
def send(subject, content, sender, recipients, message_id=None, reply_to=None,
attachments=None):
@ -49,16 +46,11 @@ def send(subject, content, sender, recipients, message_id=None, reply_to=None,
def get_content(content, registration_complete=True):
url = prepend_base_url("/newsletter/unsubscribe")
prepend = "WICHTIGE MITTEILUNG\n\n"\
"Deine Anmeldung ist aktuell nicht vollständig. Bitte fülle umgehend das"\
" Anmeldeformular aus und lasse es Deine*r Jugendleiter*in zukommen! Dieses"\
" kannst Du unter folgendem Link herunterladen:\n"\
"https://cloud.jdav-ludwigsburg.de/index.php/s/NQfRqA9MTKfPBkC"\
"\n\n****************\n\n".format(HOST)
text = "{}{}\n\n\n****************\n\nDiese Email wurde über die Webseite der JDAV Ludwigsburg"\
" verschickt. Wenn Du in Zukunft keine Emails mehr erhalten möchtest,"\
" kannst Du hier den Newsletter deabonnieren:\n{}"\
.format("" if registration_complete else prepend, content, url)
prepend = settings.PREPEND_INCOMPLETE_REGISTRATION_TEXT
footer = settings.MAIL_FOOTER.format(link=url)
text = "{prepend}{content}{footer}".format(prepend="" if registration_complete else prepend,
content=content,
footer=footer)
return text
@ -87,7 +79,4 @@ def get_mail_confirmation_link(key):
def prepend_base_url(absolutelink):
return "{protocol}://{base}{link}".format(protocol=PROTOCOL, base=BASE_URL, link=absolutelink)
mail_root = os.environ.get('EMAIL_SENDING_ADDRESS', 'christian@localhost')
return "{protocol}://{base}{link}".format(protocol=settings.PROTOCOL, base=settings.BASE_URL, link=absolutelink)

@ -2,20 +2,19 @@ from django.core.management.base import BaseCommand
from mailer.models import Message
from members.models import Member, annotate_activity_score
from django.db.models import Q
from mailer.mailutils import mail_root, send
from django.utils.translation import gettext_lazy as _
from mailer.mailutils import send
from django.conf import settings
import re
CONGRATULATE_MEMBERS_MAX = 10
SENDING_ADDRESS = mail_root
class Command(BaseCommand):
help = 'Congratulates the most active members'
requires_system_checks = False
def handle(self, *args, **options):
qs = list(reversed(annotate_activity_score(Member.objects.all()).order_by('_activity_score')))[:CONGRATULATE_MEMBERS_MAX]
qs = list(reversed(annotate_activity_score(Member.objects.all()).order_by('_activity_score')))[:settings.CONGRATULATE_MEMBERS_MAX]
for position, member in enumerate(qs):
positiontext = "{}. ".format(position + 1) if position > 0 else ""
score = member._activity_score
@ -29,20 +28,11 @@ class Command(BaseCommand):
level = 4
else:
level = 5
print("sent to ", member.prename)
content = "Hallo {}!\n\n"\
"Herzlichen Glückwunsch, du hast im letzten Jahr zu den {} aktivsten "\
"Mitgliedern der JDAV Ludwigsburg gehört! Um genau zu sein beträgt "\
"dein Aktivitäts Wert "\
"des letzten Jahres {} Punkte. Das entspricht {} Kletterer*innen. "\
"Damit warst du im letzten Jahr "\
"das {}aktivste Mitglied der JDAV Ludwigsburg.\n\n"\
"Auf ein weiteres aktives Jahr in der JDAV Ludwigsburg\n"\
"Dein*e Jugendreferent*in".format(member.prename,
CONGRATULATE_MEMBERS_MAX,
score,
level,
positiontext)
send("Herzlichen Glückwunsch {}".format(member.prename),
content, SENDING_ADDRESS, [member.email],
reply_to=["jugendreferent@jdav-ludwigsburg.de"])
content = settings.NOTIFY_MOST_ACTIVE_TEXT.format(name=member.prename,
congratulate_max=CONGRATULATE_MEMBERS_MAX,
score=score,
level=level,
position=positiontext)
send(_("Congratulation %(name)s") % { 'name': member.prename },
content, settings.DEFAULT_SENDING_ADDRESS, [member.email],
reply_to=[settings.RESPONSIBLE_MAIL])

@ -3,17 +3,14 @@ from django.core.exceptions import ValidationError
from django import forms
from django.utils.translation import gettext_lazy as _
from django.utils.translation import gettext
from .mailutils import send, get_content, NOT_SENT, SENT, PARTLY_SENT, mail_root
from .mailutils import send, get_content, NOT_SENT, SENT, PARTLY_SENT
from utils import RestrictedFileField
from jdav_web.celery import app
from django.core.validators import RegexValidator
from django.conf import settings
import os
# this is the mail address that is used to send mails
SENDING_ADDRESS = mail_root
HOST = os.environ.get('DJANGO_ALLOWED_HOST', 'localhost:8000').split(",")[0]
alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', _('Only alphanumeric characters are allowed'))
@ -30,7 +27,7 @@ class EmailAddress(models.Model):
@property
def email(self):
return "{0}@{1}".format(self.name, HOST)
return "{0}@{1}".format(self.name, settings.HOST)
@property
def forwards(self):
@ -150,16 +147,16 @@ class Message(models.Model):
reply_to_unfiltered.extend([ml.email for ml in self.reply_to_email_address.all()])
# remove sending address from reply-to field (probably unnecessary since it's removed by
# the mail provider anyways)
reply_to = [mail for mail in reply_to_unfiltered if mail != SENDING_ADDRESS ]
reply_to = [mail for mail in reply_to_unfiltered if mail != settings.DEFAULT_SENDING_MAIL ]
try:
success1 = send(self.subject, get_content(self.content, registration_complete=False),
SENDING_ADDRESS,
settings.DEFAULT_SENDING_MAIL,
emails_rem,
message_id=message_id,
attachments=attach,
reply_to=reply_to)
success2 = send(self.subject, get_content(self.content, registration_complete=True),
SENDING_ADDRESS,
settings.DEFAULT_SENDING_MAIL,
emails_no_rem,
message_id=message_id,
attachments=attach,

@ -3,7 +3,8 @@ from django import forms
from django.utils.translation import gettext_lazy as _
from django.urls import reverse
from django.http import HttpResponseRedirect
from .mailutils import send as send_mail, mail_root, get_unsubscribe_link
from .mailutils import send as send_mail, get_unsubscribe_link
from django.conf import settings
from members.models import Member
@ -46,11 +47,9 @@ def unsubscribe(request):
except (KeyError, Member.DoesNotExist):
return render_unsubscribe(request, _("Please fill in every field"))
else:
send_mail("Abmeldebestätigung",
"Klicke auf den Link, um dich vom Newsletter des JDAV "
"Ludwigsburg "
"abzumelden\n{}".format(get_unsubscribe_link(member)),
mail_root, email)
send_mail(_("Unsubscription confirmation"),
settings.UNSUBSCRIBE_CONFIRMATION_TEXT.format(link=get_unsubscribe_link(member)),
settings.DEFAULT_SENDING_MAIL, email)
return render_confirmation_sent(request, email)

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-12 17:38+0100\n"
"POT-Creation-Date: 2023-03-20 18:48+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -34,79 +34,79 @@ msgstr "Zu alt"
msgid "material"
msgstr "Material"
#: material/models.py:15
#: material/models.py:16
msgid "Name"
msgstr "Name"
#: material/models.py:21 material/models.py:38
#: material/models.py:22 material/models.py:39
msgid "Material category"
msgstr "Materialtyp"
#: material/models.py:22
#: material/models.py:23
msgid "Material categories"
msgstr "Materialtypen"
#: material/models.py:31
#: material/models.py:32
msgid "name"
msgstr "Name"
#: material/models.py:32
#: material/models.py:33
msgid "description"
msgstr "Beschreibung"
#: material/models.py:33
#: material/models.py:34
msgid "quantity"
msgstr "Anzahl"
#: material/models.py:34
#: material/models.py:35
msgid "purchase date"
msgstr "Kaufdatum"
#: material/models.py:35
#: material/models.py:36
msgid "lifetime (years)"
msgstr "Lebenszeit (Jahre)"
#: material/models.py:36
#: material/models.py:37
msgid "photo"
msgstr "Bild"
#: material/models.py:49
#: material/models.py:50
msgid "Quantity"
msgstr "Anzahl"
#: material/models.py:56
#: material/models.py:57
msgid "Thumbnail"
msgstr "Bild"
#: material/models.py:65
#: material/models.py:64
msgid "Owners"
msgstr "Verantwortliche"
#: material/models.py:75
#: material/models.py:74
msgid "Not too old?"
msgstr "Nicht zu alt?"
#: material/models.py:78
#: material/models.py:77
msgid "material part"
msgstr "Materialteil"
#: material/models.py:79
#: material/models.py:78
msgid "material parts"
msgstr "Materialteile"
#: material/models.py:85
#: material/models.py:84
msgid "owner"
msgstr "Besitzer"
#: material/models.py:86
#: material/models.py:85
msgid "count"
msgstr "Anzahl"
#: material/models.py:93
#: material/models.py:92
msgid "ownership"
msgstr "Besitzer"
#: material/models.py:94
#: material/models.py:93
msgid "ownerships"
msgstr "Verantwortliche"

@ -33,7 +33,7 @@ from .models import (Member, Group, Freizeit, MemberNoteList, NewMemberOnList, K
KlettertreffAttendee, ActivityCategory, OldMemberOnList, MemberList,
annotate_activity_score, RegistrationPassword, MemberUnconfirmedProxy)
from finance.models import Statement, Bill
from mailer.mailutils import send as send_mail, get_echo_link, mail_root
from mailer.mailutils import send as send_mail, get_echo_link
from django.conf import settings
#from easy_select2 import apply_select2
@ -127,23 +127,9 @@ class MemberAdmin(admin.ModelAdmin):
for member in queryset:
if not member.gets_newsletter:
continue
send_mail("Wichtig: Rückmeldung erforderlich!",
"""Hallo {name},
um unsere Daten auf dem aktuellen Stand zu halten, brauchen wir eine
kurze Bestätigung von dir. Dafür besuche einfach diesen Link:
{link}
Dort kannst du deine Daten überprüfen und ändern. Falls du nicht innerhalb von
30 Tagen deine Daten bestätigst, wirst du aus unserer Datenbank gelöscht und
erhälst in Zukunft keine Mails mehr von uns.
Bei Fragen, wende dich gerne an jugendreferent@jdav-ludwigsburg.de.
Viele Grüße
Deine JDAV Ludwigsburg""".format(name=member.prename, link=get_echo_link(member)),
mail_root,
send_mail(_("Echo required"),
settings.ECHO_TEXT.format(name=member.prename, link=get_echo_link(member)),
settings.DEFAULT_SENDING_MAIL,
[member.email, member.email_parents] if member.email_parents and member.cc_email_parents
else member.email)
messages.success(request, _("Successfully requested echo from selected members."))

File diff suppressed because it is too large Load Diff

@ -10,7 +10,7 @@ from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelatio
from django.contrib.contenttypes.models import ContentType
from utils import RestrictedFileField
import os
from mailer.mailutils import send as send_mail, mail_root, get_mail_confirmation_link,\
from mailer.mailutils import send as send_mail, get_mail_confirmation_link,\
prepend_base_url, get_registration_link, get_wait_confirmation_link
from django.contrib.auth.models import User
from django.conf import settings
@ -113,10 +113,10 @@ class Person(models.Model):
self.confirmed_mail = False
self.confirm_mail_key = uuid.uuid4().hex
send_mail(_('Email confirmation needed'),
CONFIRM_MAIL_TEXT.format(name=self.prename,
settings.CONFIRM_MAIL_TEXT.format(name=self.prename,
link=get_mail_confirmation_link(self.confirm_mail_key),
whattoconfirm='deiner Emailadresse'),
mail_root,
settings.DEFAULT_SENDING_MAIL,
self.email)
if self.email_parents:
self.confirmed_mail_parents = False
@ -125,7 +125,7 @@ class Person(models.Model):
CONFIRM_MAIL_TEXT.format(name=self.prename,
link=get_mail_confirmation_link(self.confirm_mail_parents_key),
whattoconfirm='der Emailadresse deiner Eltern'),
mail_root,
settings.DEFAULT_SENDING_MAIL,
self.email_parents)
else:
self.confirmed_mail_parents = True
@ -146,7 +146,7 @@ class Person(models.Model):
def send_mail(self, subject, content):
send_mail(subject,
content,
mail_root,
settings.DEFAULT_SENDING_MAIL,
[self.email, self.email_parents] if self.email_parents and self.cc_email_parents
else self.email)
@ -303,10 +303,10 @@ class Member(Person):
link = prepend_base_url(reverse('admin:members_memberunconfirmedproxy_change',
args=[str(self.id)]))
send_mail(_('New unconfirmed registration for group %(group)s') % {'group': group},
NEW_UNCONFIRMED_REGISTRATION.format(name=jl.prename,
settings.NEW_UNCONFIRMED_REGISTRATION.format(name=jl.prename,
group=group,
link=link),
mail_root,
settings.DEFAULT_SENDING_MAIL,
jl.email)
class MemberUnconfirmedManager(models.Manager):
@ -375,7 +375,7 @@ class MemberWaitingList(Person):
def ask_for_wait_confirmation(self):
"""Sends an email to the person asking them to confirm their intention to wait."""
self.send_mail(_('Waiting confirmation needed'),
WAIT_CONFIRMATION_TEXT.format(name=self.prename,
settings.WAIT_CONFIRMATION_TEXT.format(name=self.prename,
link=get_wait_confirmation_link(self)))
def confirm_waiting(self, key):
@ -415,10 +415,10 @@ class MemberWaitingList(Person):
return self.registration_key == key and timezone.now() < self.registration_expire
def invite_to_group(self):
send_mail("Gute Neuigkeiten von der JDAV",
INVITE_TEXT.format(name=self.prename,
send_mail(_("Good news"),
settings.INVITE_TEXT.format(name=self.prename,
link=get_registration_link(self)),
mail_root,
settings.DEFAULT_SENDING_MAIL,
[self.email, self.email_parents] if self.email_parents and self.cc_email_parents
else self.email)
@ -866,59 +866,3 @@ def annotate_activity_score(queryset):
+ F('_jugendleiter_klettertreff_score') + 3 * F('_jugendleiter_freizeit_score'))
)
return queryset
CONFIRM_MAIL_TEXT = """Hallo {name},
du hast bei der JDAV Ludwigsburg eine E-Mail Adresse hinterlegt. Da bei uns alle Kommunikation
per Email funktioniert, brauchen wir eine Bestätigung {whattoconfirm}. Dazu klicke bitte einfach auf
folgenden Link:
{link}
Viele Grüße
Deine JDAV Ludwigsburg"""
NEW_UNCONFIRMED_REGISTRATION = """Hallo {name},
für deine Gruppe {group} liegt eine neue unbestätigte Reservierung vor. Die Person hat bereits ihre
E-Mailadressen bestätigt. Bitte prüfe die Registrierung eingehend und bestätige falls möglich. Zu
der Registrierung kommst du hier:
{link}
Viele Grüße
Dein KOMPASS"""
INVITE_TEXT = """Hallo {name},
wir haben gute Neuigkeiten für dich. Es ist ein Platz in der Jugendgruppe freigeworden. Wir brauchen
jetzt noch ein paar Informationen von dir und deine Anmeldebestätigung. Das kannst du alles über folgenden
Link erledigen:
{link}
Du siehst dort auch die Daten, die du bei deiner Eintragung auf die Warteliste angegeben hast. Bitte
überprüfe, ob die Daten noch stimmen und ändere sie bei Bedarf ab.
Bei Fragen, wende dich gerne an jugendreferent@jdav-ludwigsburg.de.
Viele Grüße
Deine JDAV Ludwigsburg"""
WAIT_CONFIRMATION_TEXT = """Hallo {name},
leider können wir dir zur Zeit noch keinen Platz in einer Jugendgruppe anbieten. Da wir
sehr viele Interessenten haben und wir möglichst vielen die Möglichkeit bieten möchten, an
einer Jugendgruppe teilhaben zu können, fragen wir regelmäßig alle Personen auf der
Warteliste ab, ob sie noch Interesse haben.
Wenn du weiterhin auf der Warteliste bleiben möchtest, klicke auf den folgenden Link:
{link}
Falls du nicht mehr auf der Warteliste bleiben möchtest, musst du nichts machen. Du wirst automatisch entfernt.
Viele Grüße
Deine JDAV Ludwigsburg"""

@ -47,12 +47,12 @@
\begin{flushright}
\small
\noindent Deutscher Alpenverein e. V. \\
Sektion Ludwigsburg\\
Fuchshofstr. 66\\
71638 Ludwigsburg\\
Tel.: 07141 927893\\
Fax: 07141 924042\\
info@alpenverein-ludwigsburg.de\\
Sektion {{ settings.SEKTION }} \\
{{ settings.SEKTION_STREET }} \\
{{ settings.SEKTION_TOWN }} \\
Tel.: {{ settings.SEKTION_TELEPHONE }} \\
Fax: {{ settings.SEKTION_TELEFAX }} \\
{{ settings.SEKTION_CONCACT_MAIL }} \\
\end{flushright}
\end{textblock*}

@ -25,9 +25,10 @@
</table>
<p>
<input type="checkbox" required>
{% trans "I am member of the DAV Ludwigsburg." %}<br>
{% blocktrans %}I am member of the DAV {{ sektion }}.{% endblocktrans %}<br>
<input type="checkbox" required>
{% trans "I agree that my data is stored and processed on the server of the JDAV Ludwigsburg." %}</p>
{% blocktrans %}I agree that my data is stored and processed on the server of the JDAV {{ sektion }}.{% endblocktrans %}
</p>
<input type="hidden" name="password" value="{{ pwd.password }}">
<input type="hidden" name="waiter_key" value="{{ waiter_key }}">
<input type="hidden" name="save">

@ -10,7 +10,7 @@
<h1>{% trans "Register" %}</h1>
<p>{% trans "Thanks for your interest in participating. Please enter the registration password, your youth leader gave you." %}</p>
<p>{% blocktrans %}Thanks for your interest in participating in the JDAV {{ sektion }}. Please enter the registration password, your youth leader gave you.{% endblocktrans %}</p>
{% if error_message %}
<p><b>{{ error_message }}</b></p>

@ -25,7 +25,7 @@
</table>
<p>
<input type="checkbox" required>
{% trans "I agree that my data is stored and processed on the server of the JDAV Ludwigsburg." %}</p>
{% blocktrans %}I agree that my data is stored and processed on the server of the JDAV {{ sektion }}.{% endblocktrans %}
<input type="hidden" name="password" value="{{ pwd.password }}">
<input type="hidden" name="save">
<p><input type="submit" value="{% trans "submit" %}"/></p>

@ -54,12 +54,12 @@
\begin{flushright}
\small
\noindent Deutscher Alpenverein e. V. \\
Sektion Ludwigsburg\\
Fuchshofstr. 66\\
71638 Ludwigsburg\\
Tel.: 07141 927893\\
Fax: 07141 924042\\
info@alpenverein-ludwigsburg.de\\
Sektion {{ settings.SEKTION }} \\
{{ settings.SEKTION_STREET }} \\
{{ settings.SEKTION_TOWN }} \\
Tel.: {{ settings.SEKTION_TELEPHONE }} \\
Fax: {{ settings.SEKTION_TELEFAX }} \\
{{ settings.SEKTION_CONCACT_MAIL }} \\
\end{flushright}
\end{textblock*}

@ -5,6 +5,7 @@ from django.forms import ModelForm, TextInput, DateInput
from members.models import Member, RegistrationPassword, MemberUnconfirmedProxy, MemberWaitingList, Group
from django.urls import reverse
from django.utils import timezone
from django.conf import settings
class MemberForm(ModelForm):
@ -105,7 +106,8 @@ def echo(request):
def render_register_password(request):
return render(request, 'members/register_password.html')
return render(request, 'members/register_password.html',
context={'sektion': settings.SEKTION})
def render_register_wrong_password(request):
@ -131,6 +133,7 @@ def render_register(request, group, form=None, pwd=None, waiter_key=''):
'group': group,
'waiter_key': waiter_key,
'pwd': pwd,
'sektion': settings.SEKTION,
})
@ -225,7 +228,7 @@ def render_register_waiting_list(request, form=None):
form = MemberRegistrationWaitingListForm()
return render(request,
'members/register_waiting_list.html',
{'form': form})
{'form': form, 'sektion': settings.SEKTION })
def render_register_waiting_list_success(request, membername):

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-12 17:38+0100\n"
"POT-Creation-Date: 2023-03-20 18:48+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

Loading…
Cancel
Save