members/registration: client side verification of file size and format

pull/73/head
Christian Merten 1 year ago
parent 39c9160a12
commit 2b82235e87
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-17 14:58+0100\n" "POT-Creation-Date: 2024-11-17 16:11+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -928,6 +928,10 @@ msgstr ""
"Ich bin einverstanden, dass meine Daten auf dem Server der JDAV %(sektion)s " "Ich bin einverstanden, dass meine Daten auf dem Server der JDAV %(sektion)s "
"gespeichert und verarbeitet werden." "gespeichert und verarbeitet werden."
#: members/templates/members/member_form.html:101
msgid "This file is bigger than the maximal allowed file size of 5 MiB."
msgstr "Diese Datei ist größer als die maximal erlaubte Dateigröße von 5 MiB."
#: members/templates/members/register.html:13 #: members/templates/members/register.html:13
#: members/templates/members/register_password.html:11 #: members/templates/members/register_password.html:11
#: members/templates/members/register_success.html:11 #: members/templates/members/register_success.html:11
@ -1045,39 +1049,40 @@ msgstr ""
"Danke %(prename)s für dein Interesse auf der Warteliste zu bleiben.\n" "Danke %(prename)s für dein Interesse auf der Warteliste zu bleiben.\n"
"Dein Platz wurde bestätigt." "Dein Platz wurde bestätigt."
#: members/views.py:35 members/views.py:58 #: members/views.py:36 members/views.py:59
msgid "Prename of the member." msgid "Prename of the member."
msgstr "Vorname des Teilnehmenden" msgstr "Vorname des Teilnehmenden"
#: members/views.py:36 members/views.py:59 #: members/views.py:37 members/views.py:60
msgid "Lastname of the member." msgid "Lastname of the member."
msgstr "Nachname des Teilnehmenden" msgstr "Nachname des Teilnehmenden"
#: members/views.py:37 #: members/views.py:38
msgid "phone number of child or parent" msgid "phone number of child or parent"
msgstr "Telefonnummer des Teilnehmenden oder einer Kontaktperson" msgstr "Telefonnummer des Teilnehmenden oder einer Kontaktperson"
#: members/views.py:38 #: members/views.py:39
msgid "email of child if available, otherwise parental email address" msgid "email of child if available, otherwise parental email address"
msgstr "Falls verfügbar, E-Mailadresse des Teilnehmenden, sonst einer Kontaktperson" msgstr ""
"Falls verfügbar, E-Mailadresse des Teilnehmenden, sonst einer Kontaktperson"
#: members/views.py:39 #: members/views.py:40
msgid "optional additional email address" msgid "optional additional email address"
msgstr "Optionale zusätzliche E-Mailadresse" msgstr "Optionale zusätzliche E-Mailadresse"
#: members/views.py:96 members/views.py:176 #: members/views.py:97 members/views.py:177
msgid "The entered password is wrong." msgid "The entered password is wrong."
msgstr "Das eingegebene Passwort ist falsch." msgstr "Das eingegebene Passwort ist falsch."
#: members/views.py:130 members/views.py:138 members/views.py:333 #: members/views.py:131 members/views.py:139 members/views.py:334
msgid "invalid" msgid "invalid"
msgstr "ungültig" msgstr "ungültig"
#: members/views.py:141 members/views.py:335 #: members/views.py:142 members/views.py:336
msgid "expired" msgid "expired"
msgstr "abgelaufen" msgstr "abgelaufen"
#: members/views.py:150 #: members/views.py:151
msgid "Invalid emergency contacts" msgid "Invalid emergency contacts"
msgstr "Ungültige Notfallkontakte" msgstr "Ungültige Notfallkontakte"

@ -94,4 +94,13 @@
const totalFormsInput = document.getElementById('id_emergencycontact_set-TOTAL_FORMS'); const totalFormsInput = document.getElementById('id_emergencycontact_set-TOTAL_FORMS');
totalFormsInput.value = parseInt(form_count); totalFormsInput.value = parseInt(form_count);
}); });
const uploadField = document.getElementById("id_registration_form");
uploadField.onchange = function() {
if(this.files[0].size > 5 * 1024 * 1024) {
alert('{% trans "This file is bigger than the maximal allowed file size of 5 MiB." %}');
this.value = "";
}
};
</script> </script>

@ -2,7 +2,7 @@ from startpage.views import render
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.forms import ModelForm, TextInput, DateInput, BaseInlineFormSet,\ from django.forms import ModelForm, TextInput, DateInput, BaseInlineFormSet,\
inlineformset_factory, HiddenInput inlineformset_factory, HiddenInput, FileInput
from members.models import Member, RegistrationPassword, MemberUnconfirmedProxy, MemberWaitingList, Group,\ from members.models import Member, RegistrationPassword, MemberUnconfirmedProxy, MemberWaitingList, Group,\
confirm_mail_by_key, EmergencyContact confirm_mail_by_key, EmergencyContact
from django.urls import reverse from django.urls import reverse
@ -29,7 +29,8 @@ class MemberRegistrationForm(ModelForm):
'phone_number', 'birth_date', 'gender', 'email', 'alternative_email', 'phone_number', 'birth_date', 'gender', 'email', 'alternative_email',
'registration_form'] 'registration_form']
widgets = { widgets = {
'birth_date': DateInput(format='%d.%m.%Y', attrs={'type': 'date'}) 'birth_date': DateInput(format='%d.%m.%Y', attrs={'type': 'date'}),
'registration_form': FileInput(attrs={'accept': 'application/pdf,image/jpeg,image/png'}),
} }
help_texts = { help_texts = {
'prename': _('Prename of the member.'), 'prename': _('Prename of the member.'),

Loading…
Cancel
Save