update translations, add email address model, representing association emails with forwards

v1-0-stable
Christian Merten 6 years ago
parent a2435e3bb7
commit 5c780bdcd3

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-11 16:16+0100\n"
"POT-Creation-Date: 2020-01-24 23:21+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,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: jdav_web/urls.py:25
#: jdav_web/urls.py:26
msgid "Startpage"
msgstr "Startseite"
@ -26,29 +26,22 @@ msgstr "Startseite"
msgid "Welcome,"
msgstr "Willkommen"
#: templates/admin/base.html:37
msgid "View site"
msgstr "Seite anzeigen"
#: templates/admin/base.html:42
#: templates/admin/base.html:40
msgid "Documentation"
msgstr "Dokumentation"
#: templates/admin/base.html:46
#: templates/admin/base.html:44
msgid "Change password"
msgstr "Passwort ändern"
#: templates/admin/base.html:48
#: templates/admin/base.html:46
msgid "Log out"
msgstr "Abmelden"
#: templates/admin/base.html:58
#: templates/admin/base.html:56
msgid "Home"
msgstr "Start"
#~ msgid "JDAV LB Administration"
#~ msgstr "JDAV LB Verwaltung"
#: utils.py:26
msgid "Filetype not supported."
msgstr "Dateityp nicht unterstützt."
@ -56,3 +49,9 @@ msgstr "Dateityp nicht unterstützt."
#: utils.py:28
msgid "Please keep filesize under {}. Current filesize: {}"
msgstr "Maximale Dateigröße {}. Aktuelle Dateigröße: {}."
#~ msgid "View site"
#~ msgstr "Seite anzeigen"
#~ msgid "JDAV LB Administration"
#~ msgstr "JDAV LB Verwaltung"

@ -7,7 +7,7 @@ from django import forms
from easy_select2 import apply_select2
import json
from .models import Message, Attachment, MessageForm
from .models import Message, Attachment, MessageForm, EmailAddress
from .mailutils import NOT_SENT, PARTLY_SENT
from members.models import Member
@ -17,6 +17,15 @@ class AttachmentInline(admin.TabularInline):
extra = 0
class EmailAddressAdmin(admin.ModelAdmin):
list_display = ('email', )
formfield_overrides = {
models.ManyToManyField: {'widget': forms.CheckboxSelectMultiple},
models.ForeignKey: {'widget': apply_select2(forms.Select)}
}
filter_horizontal = ('to_members',)
class MessageAdmin(admin.ModelAdmin):
"""Message creation view"""
list_display = ('subject', 'get_recipients', 'sent')
@ -81,3 +90,4 @@ def submit_message(msg, request):
admin.site.register(Message, MessageAdmin)
admin.site.register(EmailAddress, EmailAddressAdmin)

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-05 10:46+0000\n"
"POT-Creation-Date: 2020-01-24 23:21+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,19 +18,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: mailer/admin.py:43
#: mailer/admin.py:55
msgid "Send message"
msgstr "Nachricht verschicken"
#: mailer/admin.py:59
#: mailer/admin.py:85
msgid "Failed to send message"
msgstr "Fehler beim Senden der Email"
#: mailer/admin.py:61
#: mailer/admin.py:87
msgid "Failed to send some messages"
msgstr "Fehler beim Senden der Emails"
#: mailer/admin.py:63
#: mailer/admin.py:89
msgid "Successfully sent message"
msgstr "Email wurde erfolgreich verschickt"
@ -38,77 +38,97 @@ msgstr "Email wurde erfolgreich verschickt"
msgid "mailer"
msgstr "Verteiler"
#: mailer/models.py:39
#: mailer/models.py:21
msgid "subject"
msgstr "Betreff"
#: mailer/models.py:40
#: mailer/models.py:22
msgid "content"
msgstr "Inhalt"
#: mailer/models.py:42
#: mailer/models.py:24
msgid "to group"
msgstr "An Gruppe"
#: mailer/models.py:45
#: mailer/models.py:27
msgid "to member list"
msgstr "An Teilnehmerliste"
#: mailer/models.py:49
#: mailer/models.py:31
msgid "to member"
msgstr "An Teilnehmer"
#: mailer/models.py:52
#: mailer/models.py:34
msgid "reply to"
msgstr "Antwort an"
#: mailer/models.py:56
#: mailer/models.py:37
msgid "sent"
msgstr "Gesendet"
#: mailer/models.py:68
#: mailer/models.py:49
msgid "Some other members"
msgstr "Andere Teilnehmer"
#: mailer/models.py:70
#: mailer/models.py:51
msgid "recipients"
msgstr "Empfänger"
#: mailer/models.py:105
#: mailer/models.py:102
msgid "message"
msgstr "Nachricht"
#: mailer/models.py:106
#: mailer/models.py:103
msgid "messages"
msgstr "Nachrichten"
#: mailer/models.py:108
#: mailer/models.py:105
msgid "Can submit mails"
msgstr "Kann Mails verschicken"
#: mailer/models.py:123
#: mailer/models.py:120
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:131
#: mailer/models.py:127
msgid "file"
msgstr "Datei"
#: mailer/models.py:137
#: mailer/models.py:133
msgid "Empty"
msgstr "Leer"
#: mailer/models.py:140
#: mailer/models.py:136
msgid "attachment"
msgstr "Anhang"
#: mailer/models.py:141
#: mailer/models.py:137
msgid "attachments"
msgstr "Anhänge"
#: mailer/models.py:140
msgid "Only alphanumeric characters are allowed"
msgstr "Nur Buchstaben und Zahlen erlaubt"
#: mailer/models.py:145
msgid "name"
msgstr "Name"
#: mailer/models.py:147
msgid "Forward to"
msgstr "Weiterleitung"
#: mailer/models.py:157
msgid "email address"
msgstr "Email-Adresse"
#: mailer/models.py:158
msgid "email addresses"
msgstr "Email-Adressen"
#: mailer/templates/mailer/change_form.html:11
msgid "Save and send mail"
msgstr "Speichern und Email senden"

@ -6,11 +6,13 @@ from django.utils.translation import ugettext
from .mailutils import send, get_content, NOT_SENT, SENT, PARTLY_SENT, mail_root
from utils import RestrictedFileField
from jdav_web.celery import app
from django.core.validators import RegexValidator
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]
# Create your models here.
@ -118,7 +120,6 @@ class MessageForm(forms.ModelForm):
raise ValidationError(_('Either a group, a memberlist or at least'
' one member is required as recipient'))
class Attachment(models.Model):
"""Represents an attachment to an email"""
msg = models.ForeignKey(Message, on_delete=models.CASCADE)
@ -134,3 +135,24 @@ class Attachment(models.Model):
class Meta:
verbose_name = _('attachment')
verbose_name_plural = _('attachments')
alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', _('Only alphanumeric characters are allowed'))
class EmailAddress(models.Model):
"""Represents an email address, that is forwarded to specific members"""
name = models.CharField(_('name'), max_length=50, validators=[alphanumeric])
to_members = models.ManyToManyField('members.Member',
verbose_name=_('Forward to'))
@property
def email(self):
return "{0}@{1}".format(self.name, HOST)
def __str__(self):
return self.email
class Meta:
verbose_name = _('email address')
verbose_name_plural = _('email addresses')

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-10-11 13:02+0200\n"
"POT-Creation-Date: 2020-01-24 23:21+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,98 +18,97 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: admin.py:29
#: material/admin.py:29
msgid "Age"
msgstr "Alter"
#: admin.py:34
#: material/admin.py:34
msgid "Not too old"
msgstr "Nicht zu alt"
#: admin.py:35
#: material/admin.py:35
msgid "Too old"
msgstr "Zu alt"
#: apps.py:7
#: material/apps.py:7
msgid "material"
msgstr "Material"
#: models.py:15
#: material/models.py:15
msgid "Name"
msgstr "Name"
#: models.py:16
msgid "Description"
msgstr "Beschreibung"
#: models.py:22 models.py:39
#: material/models.py:21 material/models.py:38
msgid "Material category"
msgstr "Materialtyp"
#: models.py:23
#: material/models.py:22
msgid "Material categories"
msgstr "Materialtypen"
#: models.py:32
#: material/models.py:31
msgid "name"
msgstr "Name"
#: models.py:33
#: material/models.py:32
msgid "description"
msgstr "Beschreibung"
#: models.py:34
#: material/models.py:33
msgid "quantity"
msgstr "Anzahl"
#: models.py:35
#: material/models.py:34
msgid "purchase date"
msgstr "Kaufdatum"
#: models.py:36
#: material/models.py:35
msgid "lifetime (years)"
msgstr "Lebenszeit (Jahre)"
#: models.py:37
#: material/models.py:36
msgid "photo"
msgstr "Bild"
#: models.py:50
#: material/models.py:49
msgid "Quantity"
msgstr "Anzahl"
#: models.py:57
#: material/models.py:56
msgid "Thumbnail"
msgstr "Bild"
#: models.py:66
#: material/models.py:65
msgid "Owners"
msgstr "Verantwortliche"
#: models.py:76
#: material/models.py:75
msgid "Not too old?"
msgstr "Nicht zu alt?"
#: models.py:79
#: material/models.py:78
msgid "material part"
msgstr "Materialteil"
#: models.py:80
#: material/models.py:79
msgid "material parts"
msgstr "Materialteile"
#: models.py:86
#: material/models.py:85
msgid "owner"
msgstr "Besitzer"
#: models.py:87
#: material/models.py:86
msgid "count"
msgstr "Anzahl"
#: models.py:94
#: material/models.py:93
msgid "ownership"
msgstr "Besitzer"
#: models.py:95
#: material/models.py:94
msgid "ownerships"
msgstr "Verantwortliche"
#~ msgid "Description"
#~ msgstr "Beschreibung"

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-14 23:12+0200\n"
"POT-Creation-Date: 2020-01-24 23:21+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,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: members/admin.py:26 members/models.py:72
#: members/admin.py:26 members/models.py:73
msgid "Registration complete"
msgstr "Anmeldung vollständig"
@ -54,177 +54,177 @@ msgstr "Kriseninterventionsliste erstellen"
msgid "Generate overview"
msgstr "Hinweise für Jugendleiter erstellen"
#: members/apps.py:7 members/models.py:128
#: members/apps.py:7 members/models.py:129
msgid "members"
msgstr "Teilnehmer"
#: members/models.py:19
#: members/models.py:20
msgid "Name"
msgstr "Name"
#: members/models.py:20
#: members/models.py:21
msgid "Description"
msgstr "Beschreibung"
#: members/models.py:26 members/models.py:151
#: members/models.py:27 members/models.py:150
#: members/templates/members/change_member.html:17
msgid "Activity"
msgstr "Aktivität"
#: members/models.py:27
#: members/models.py:28
msgid "Activities"
msgstr "Aktivitäten"
#: members/models.py:35
#: members/models.py:36
msgid "name"
msgstr "Name"
#: members/models.py:37
#: members/models.py:38
msgid "minimum age (years)"
msgstr "Mindestalter (Jahre)"
#: members/models.py:44 members/models.py:65
#: members/models.py:45 members/models.py:66
msgid "group"
msgstr "Gruppe"
#: members/models.py:45
#: members/models.py:46
msgid "groups"
msgstr "Gruppen"
#: members/models.py:53
#: members/models.py:54
msgid "prename"
msgstr "Vorname"
#: members/models.py:54
#: members/models.py:55
msgid "last name"
msgstr "Nachname"
#: members/models.py:55
#: members/models.py:56
msgid "street"
msgstr "Straße"
#: members/models.py:56
#: members/models.py:57
msgid "Postcode"
msgstr "PLZ"
#: members/models.py:58
#: members/models.py:59
msgid "town"
msgstr "Stadt"
#: members/models.py:59
#: members/models.py:60
msgid "phone number"
msgstr "Telefonnummer"
#: members/models.py:60
#: members/models.py:61
msgid "parents phone number"
msgstr "Telefonnummer der Eltern"
#: members/models.py:63
#: members/models.py:64
msgid "Parents' Email"
msgstr "Email der Eltern"
#: members/models.py:64
#: members/models.py:65
msgid "birth date"
msgstr "Geburtsdatum"
#: members/models.py:66
#: members/models.py:67
msgid "receives newsletter"
msgstr "Erhält den Newsletter"
#: members/models.py:70
#: members/models.py:71
msgid "comments"
msgstr "Kommentare"
#: members/models.py:71
#: members/models.py:72
msgid "created"
msgstr "erstellt"
#: members/models.py:73
#: members/models.py:74
msgid "registration form"
msgstr "Anmeldeformular"
#: members/models.py:124 members/models.py:215
#: members/models.py:125 members/models.py:217
msgid "Group"
msgstr "Gruppe"
#: members/models.py:127
#: members/models.py:128
msgid "member"
msgstr "Teilnehmer"
#: members/models.py:153
#: members/models.py:152
msgid "Place"
msgstr "Ort"
#: members/models.py:154
#: members/models.py:153
msgid "Destination (optional)"
msgstr "Ziel (optional)"
#: members/models.py:156 members/models.py:211
#: members/models.py:155 members/models.py:213
msgid "Date"
msgstr "Datum"
#: members/models.py:157
#: members/models.py:156
msgid "End (optional)"
msgstr "Ende"
#: members/models.py:159
#: members/models.py:158
msgid "Groups"
msgstr "Gruppen"
#: members/models.py:167
#: members/models.py:166
msgid "Categories"
msgstr "Kategorien"
#: members/models.py:168
#: members/models.py:167
msgid "easy"
msgstr "leicht"
#: members/models.py:168
#: members/models.py:167
msgid "medium"
msgstr "mittel"
#: members/models.py:168
#: members/models.py:167
msgid "hard"
msgstr "schwer"
#: members/models.py:177
#: members/models.py:176
msgid "Memberlist"
msgstr "Teilnehmerliste"
#: members/models.py:178
#: members/models.py:177
msgid "Memberlists"
msgstr "Teilnehmerlisten"
#: members/models.py:193 members/models.py:201 members/models.py:246
#: members/models.py:253
#: members/models.py:195 members/models.py:203 members/models.py:248
#: members/models.py:255
msgid "Member"
msgstr "Teilnehmer"
#: members/models.py:195
#: members/models.py:197
msgid "Comment"
msgstr "Kommentar"
#: members/models.py:202 members/models.py:254
#: members/models.py:204 members/models.py:256
msgid "Members"
msgstr "Teilnehmer"
#: members/models.py:212
#: members/models.py:214
msgid "Location"
msgstr "Ort"
#: members/models.py:213
#: members/models.py:215
msgid "Topic"
msgstr "Thema"
#: members/models.py:237
#: members/models.py:239
msgid "Jugendleiter"
msgstr "Jugendleiter"
#: members/models.py:240
#: members/models.py:242
msgid "Klettertreff"
msgstr "Klettertreff"
#: members/models.py:241
#: members/models.py:243
msgid "Klettertreffs"
msgstr "Klettertreffs"

@ -1,5 +1,6 @@
from django.core.management.base import BaseCommand
from members.models import Member
from mailer.models import EmailAddress
import re
@ -16,6 +17,10 @@ class Command(BaseCommand):
if not match:
return
prename, lastname = match.groups()
addresses = [addr.email for addr in EmailAddress.objects.filter(name=prename)]
if addresses:
self.stdout.write(" ".join(addresses))
return
try:
jugendleiter = Member.objects.filter(group__name='Jugendleiter')
matching = [jl.email for jl in jugendleiter if matches(simplify(jl.prename),

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-11 16:16+0100\n"
"POT-Creation-Date: 2020-01-24 23:21+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