feat(members/views): show upload registration form after echo if missing

pull/153/head
Christian Merten 8 months ago
parent 2fcdf1ee25
commit fb14c2f060
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: 2025-04-10 23:51+0200\n"
"POT-Creation-Date: 2025-04-11 00:39+0200\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"
@ -140,7 +140,8 @@ msgstr ""
#: members/admin.py
msgid "Unconfirm selected members."
msgstr "Ausgewählte Teilnehmer*innen zu unbestätigten Registrierungen zurücksetzen."
msgstr ""
"Ausgewählte Teilnehmer*innen zu unbestätigten Registrierungen zurücksetzen."
#: members/admin.py members/tests.py
msgid "Successfully requested mail confirmation from selected registrations."
@ -1787,6 +1788,8 @@ msgstr ""
#: members/templates/members/echo_password.html
#: members/templates/members/echo_success.html
#: members/templates/members/echo_wrong_password.html
#: members/templates/members/upload_registration_form.html
#: members/templates/members/upload_registration_form_success.html
msgid "Echo"
msgstr "Rückmeldung"
@ -2109,6 +2112,25 @@ msgstr ""
"abgelehnt. Wenn ein Platz in einer anderen Gruppe frei wird, erhältst du "
"eine neue Einladung.\n"
#: members/templates/members/upload_registration_form.html
#, python-format
msgid ""
"Thank you for echoing back, your data was updated. For legal\n"
"reasons, we also need a signed participation form. In your case, a recent\n"
"participation form is missing. Please <a href=\"%(download_url)s?"
"key=%(key)s\">download</a>\n"
"the pre-filled form, fill in the remaining fields and read the general "
"conditions. If you agree,\n"
"please sign the document and upload a scan or image here."
msgstr ""
"Danke für das Aktualisieren deiner Daten. Aus rechtlichen Gründen, "
"benötigen wir zusätzlich ein schriftliches Anmeldeformular. Für dich liegt uns "
"kein aktuelles Formular vor. Bitte "
"<a href=\"%(download_url)s?key=%(key)s\">lade das Formular herunter</a>, "
"fülle die verbleibenden Felder aus und lese unsere Teilnahmebedingungen. Falls du "
"zustimmst, unterschreibe bitte das Formular und lade hier einen Scan oder "
"ein Bild hoch."
#: members/templates/members/upload_registration_form.html
#, python-format
msgid ""
@ -2141,13 +2163,14 @@ msgid "The supplied key for uploading a registration form is invalid."
msgstr "Der verwendete Link zum Hochladen eines Anmeldeformulars ist ungültig."
#: members/templates/members/upload_registration_form_success.html
#: members/tests.py
msgid ""
"Thank you for uploading the registration form. Our team will process your "
"registration shortly."
msgid "Thank you for uploading the registration form."
msgstr "Danke für das Hochladen des Anmeldeformulars."
#: members/templates/members/upload_registration_form_success.html
msgid "Our team will process your registration shortly."
msgstr ""
"Danke für das Hochladen des Anmeldeformulars. Unser Jugendleiterteam wird "
"deine Registrierung so schnell wie möglich bearbeiten."
"Unser Jugendleiter*innenteam wird deine Registrierung so schnell wie möglich "
"bearbeiten."
#: members/templates/members/waiting_confirmation_invalid.html
msgid "Waiting confirmation failed"
@ -2195,6 +2218,14 @@ msgstr ""
msgid "The entered password is wrong."
msgstr "Das eingegebene Passwort ist falsch."
#: members/tests.py
msgid ""
"Thank you for uploading the registration form. Our team will process your "
"registration shortly."
msgstr ""
"Danke für das Hochladen des Anmeldeformulars. Unser Jugendleiterteam wird "
"deine Registrierung so schnell wie möglich bearbeiten."
#: members/tests.py members/views.py
msgid "invalid"
msgstr "ungültig"

@ -354,6 +354,7 @@ class Member(Person):
help_text=_('If the person registered from the waitinglist, this is their application date.'))
objects = MemberManager()
all_objects = models.Manager()
@property
def email_fields(self):
@ -509,6 +510,10 @@ class Member(Person):
# get activity overview
return Freizeit.objects.filter(membersonlist__member=self)
def generate_upload_registration_form_key(self):
self.upload_registration_form_key = uuid.uuid4().hex
self.save()
def create_from_registration(self, waiter, group):
"""Given a member, a corresponding waiting-list object and a group, this completes
the registration and requests email confirmations if necessary.

@ -3,19 +3,36 @@
{% load static %}
{% block title %}
{% if member.confirmed %}
{% trans "Echo" %}
{% else %}
{% trans "Registration" %}
{% endif %}
{% endblock %}
{% block content %}
{% if member.confirmed %}
<h1>{% trans "Echo" %}</h1>
{% else %}
<h1>{% trans "Register" %}</h1>
{% endif %}
{% url 'members:download_registration_form' as download_url %}
{% if member.confirmed %}
<p>{% blocktrans %}Thank you for echoing back, your data was updated. For legal
reasons, we also need a signed participation form. In your case, a recent
participation form is missing. Please <a href="{{ download_url }}?key={{ key }}">download</a>
the pre-filled form, fill in the remaining fields and read the general conditions. If you agree,
please sign the document and upload a scan or image here.{% endblocktrans %}
</p>
{% else %}
<p>{% blocktrans %}We summarized your registration in our registration
form. Please <a href="{{ download_url }}?key={{ key }}">download</a> it,
fill in the remaining fields and read the general conditions. If you agree,
please sign the document and upload a scan or image here.{% endblocktrans %}
</p>
{% endif %}
<p>{% blocktrans %}If you are not an adult yet, please let someone responsible for you sign the agreement.{% endblocktrans %}
</p>

@ -3,14 +3,26 @@
{% load static %}
{% block title %}
{% if member.confirmed %}
{% trans "Echo" %}
{% else %}
{% trans "Registration" %}
{% endif %}
{% endblock %}
{% block content %}
{% if member.confirmed %}
<h1>{% trans "Echo" %}</h1>
{% else %}
<h1>{% trans "Register" %}</h1>
{% endif %}
<p>{% blocktrans %}Thank you for uploading the registration form. Our team will process your registration shortly.{% endblocktrans %}
<p>
{% blocktrans %}Thank you for uploading the registration form.{% endblocktrans %}
{% if not member.confirmed %}
{% blocktrans %}Our team will process your registration shortly.{% endblocktrans %}
{% endif %}
</p>
{% endblock %}

@ -1354,7 +1354,7 @@ class UploadRegistrationFormViewTestCase(BasicMemberTestCase):
})
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response,
_("Thank you for uploading the registration form. Our team will process your registration shortly."))
_("Our team will process your registration shortly."))
class DownloadRegistrationFormViewTestCase(BasicMemberTestCase):
def setUp(self):
@ -1597,6 +1597,9 @@ class EchoViewTestCase(BasicMemberTestCase):
def setUp(self):
super().setUp()
self.key = self.fritz.generate_echo_key()
file = SimpleUploadedFile("form.pdf", b"file_content", content_type="application/pdf")
self.fritz.registration_form = file
self.fritz.save()
def _assert_failed(self, response):
self.assertEqual(response.status_code, HTTPStatus.OK)

@ -180,7 +180,13 @@ def echo(request):
# member.echo_key, member.echo_expire = "", timezone.now()
member.echoed = True
member.save()
return render_echo_success(request, member.prename)
if not member.registration_form:
# If the member does not have a registration form, forward them to the upload page.
member.generate_upload_registration_form_key()
member.send_upload_registration_form_link()
return HttpResponseRedirect(reverse('members:upload_registration_form') + "?key=" + member.upload_registration_form_key)
else:
return render_echo_success(request, member.prename)
except ValueError:
# when input is invalid
form = MemberForm(request.POST)
@ -305,7 +311,7 @@ def download_registration_form(request):
return render_upload_registration_form_invalid(request)
key = request.GET['key']
try:
member = MemberUnconfirmedProxy.objects.get(upload_registration_form_key=key)
member = Member.all_objects.get(upload_registration_form_key=key)
return render_download_registration_form(request, member)
except Member.DoesNotExist:
return render_upload_registration_form_invalid(request)
@ -332,7 +338,7 @@ def upload_registration_form(request):
return render_upload_registration_form_invalid(request)
key = request.GET['key']
try:
member = MemberUnconfirmedProxy.objects.get(upload_registration_form_key=key)
member = Member.all_objects.get(upload_registration_form_key=key)
except Member.DoesNotExist:
return render_upload_registration_form_invalid(request)
form = UploadRegistrationForm(instance=member)
@ -341,7 +347,7 @@ def upload_registration_form(request):
return render_upload_registration_form_invalid(request)
key = request.POST['key']
try:
member = MemberUnconfirmedProxy.objects.get(upload_registration_form_key=key)
member = Member.all_objects.get(upload_registration_form_key=key)
except Member.DoesNotExist:
return render_upload_registration_form_invalid(request)

Loading…
Cancel
Save