members: add registration pages

v1-0-stable
Christian Merten 3 years ago
parent 5a9275dfcb
commit 9722dd68c5
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -405,6 +405,15 @@ class KlettertreffAttendee(models.Model):
verbose_name_plural = _('Members')
class RegistrationPassword(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
password = models.CharField(_('Password'), default='', max_length=20, unique=True)
class Meta:
verbose_name = _('registration password')
verbose_name_plural = _('registration passwords')
def annotate_activity_score(queryset):
one_year_ago = datetime.now() - timedelta(days=365)
queryset = queryset.annotate(

@ -0,0 +1,30 @@
{% extends "members/base.html" %}
{% load i18n %}
{% load static %}
{% block title %}
{% trans "Registration" %}
{% endblock %}
{% block content %}
<link rel="stylesheet" href="{% static "ludwigsburgalpin/termine.css" static %}">
<h1>{% trans "Register" %}</h1>
<p>{% trans "Here you can register for group" %} {{groupname}}.</p>
{% if error_message %}
<p><b>{{ error_message }}</b></p>
{% endif %}
<form action="" method="post">
<table class="termine">
{% csrf_token %}
{{form}}
</table>
<input type="hidden" name="password" value="{{ password }}">
<p><input type="submit" value="{% trans "submit" %}"/></p>
</form>
{% endblock %}

@ -0,0 +1,24 @@
{% extends "members/base.html" %}
{% load i18n %}
{% load static %}
{% block title %}
{% trans "Registration" %}
{% endblock %}
{% block content %}
<h1>{% trans "Register" %}</h1>
<p>{% trans "Thanks for your interest in participating. Please enter the registration password, your youth leader gave you." %}</p>
{% if error_message %}
<p><b>{{ error_message }}</b></p>
{% endif %}
<form action="" method="post">
<input type="password" name="password" required>
<p><input type="submit" value="{% trans "submit" %}"/></p>
</form>
{% endblock %}

@ -0,0 +1,15 @@
{% extends "members/base.html" %}
{% load i18n %}
{% load static %}
{% block title %}
{% trans "Registration" %}
{% endblock %}
{% block content %}
<h1>{% trans "Register" %}</h1>
<p>{% trans "Your registration succeeded. Please remember to confirm your email address. The coordinating team will process your registration when your email address is confirmed." %}</p>
{% endblock %}

@ -0,0 +1,15 @@
{% extends "members/base.html" %}
{% load i18n %}
{% load static %}
{% block title %}
{% trans "Registration" %}
{% endblock %}
{% block content %}
<h1>{% trans "Register" %}</h1>
<p>{% trans "You entered a wrong password to often. Please ask your youth leader again." %}</p>
{% endblock %}

@ -16,6 +16,10 @@ class MemberForm(ModelForm):
'birth_date': DateInput(format='%d.%m.%Y', attrs={'class': 'datepicker'})
}
class MemberFormWithEmail(MemberForm):
class Meta:
fields = ['prename', 'lastname', 'street', 'plz', 'town', 'phone_number',
'phone_number_parents', 'birth_date', 'email', 'email_parents', 'cc_email_parents']
def render_echo_failed(request, reason=""):
context = {}
@ -65,3 +69,50 @@ def echo(request):
return render_echo(request, key, form)
except (Member.DoesNotExist, KeyError):
return render_echo_failed(request, _("invalid"))
def render_register_password(request):
return render(request, 'members/register_password.html')
def render_register_wrong_password(request):
return render(request,
'members/register_password.html',
{'error_message': _("The entered password is wrong."))
def render_register_success(request, groupname, membername):
return render(request,
'members/register_success.html',
{'groupname': groupname,
'membername': membername})
def render_register(request, groupname, pwd, form=None):
if form is None:
form = MemberFormWithEmail(request.POST)
return render(request,
'members/register.html',
{'form': form, 'password': pwd, 'groupname': groupname})
def register(request):
if request.method == 'GET' or not "password" in request.POST:
# show password
return render_register_password(request)
# confirm password
try:
pwd = RegistrationPassword.objects.get(password=request.POST['password'])
except Member.DoesNotExist:
return render_register_wrong_password(request)
if "save" in request.POST:
# process registration
form = MemberFormWithEmail(request.POST)
try:
form.save()
return render_register_success(request, pwd.group.name, form.prename)
except ValueError:
# when input is invalid
return render_register(request, pwd, form)
# we are not saving yet
return render_register(request, pwd, form=None)

Loading…
Cancel
Save