2
0
Fork 0

add first asta functionality

This commit is contained in:
Andreas (@xAndy) Zimmermann 2022-05-17 16:26:31 +02:00
parent 75d71f082d
commit efe0d392db
7 changed files with 92 additions and 1 deletions

View File

@ -39,6 +39,14 @@ class RegisterForm(forms.Form):
okf = forms.BooleanField(label="Ich bin damit einverstanden, SMS zu erhalten.") okf = forms.BooleanField(label="Ich bin damit einverstanden, SMS zu erhalten.")
class AstaForm(forms.Form):
confirm = forms.BooleanField(
required=True,
label="Ich habe mich beim AStA als reguläres Mitglied angemeldet",
help_text="Aus Versicherungsgründen müssen Helfer*innen AStA Mitglieder sein. Die Mitgliedschaft ist kostenlos.",
)
# placeholder form for simple submit button use cases so we get csrf protection # placeholder form for simple submit button use cases so we get csrf protection
class EmptyForm(forms.Form): class EmptyForm(forms.Form):
pass pass

View File

@ -0,0 +1,18 @@
# Generated by Django 4.0.4 on 2022-05-17 13:13
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("app", "0008_alter_message_sent_at"),
]
operations = [
migrations.AddField(
model_name="helper",
name="asta_confirmed",
field=models.BooleanField(default=False),
),
]

View File

@ -67,6 +67,7 @@ class Helper(models.Model):
name = models.CharField(max_length=200) name = models.CharField(max_length=200)
# change this to a generic state variable to allow for number blocking/account deactivation? # change this to a generic state variable to allow for number blocking/account deactivation?
number_validated = models.BooleanField(default=False) number_validated = models.BooleanField(default=False)
asta_confirmed = models.BooleanField(default=False)
def __str__(self): def __str__(self):
return self.name return self.name

View File

@ -0,0 +1,31 @@
{% extends "helper_base.html" %}
{% block title %}Registrierung{% endblock %}
{% block content %}
<a href="https://asta-bamberg.de/mitglied-werden" target="_blank" class="button is-primary">AStA Formular</a>
<form action="" method="post">
{% csrf_token %}
{% for field in form %}
<div class="field">
{% if field.widget_type == 'checkbox' %}
<div class="control">
<label class="checkbox" for="{{ field.id_for_label }}">{{ field }} {{ field.label }}</label>
</div>
{% else %}
<label class="label" for="{{ field.id_for_label }}">{{ field.label }}</label>
<div class="control">
{{ field }}
</div>
{% endif %}
{% for error in field.errors %}
<p class="help is-danger">{{ error }}</p>
{% endfor %}
{% if field.help_text %}
<p class="help">{{ field.help_text }}</p>
{% endif %}
</div>
{% endfor %}
<button class="button is-link" type="submit">Speichern</button>
</form>
{% endblock %}

View File

@ -2,6 +2,10 @@
{% block title %}Help!{% endblock %} {% block title %}Help!{% endblock %}
{% block custom_notifications %}
{% endblock %}
{% block navbar %} {% block navbar %}
<div class="navbar-start"> <div class="navbar-start">
{% if not helper%} {% if not helper%}
@ -19,6 +23,15 @@
{% endblock %} {% endblock %}
{% block body %} {% block body %}
{% if helper and not helper.asta_confirmed %}
<section class="section">
<div class="container">
<div class="notification is-danger">
<a href="{% url 'asta' %}">Bitte Bestätige deine AStA Mitgliedschaft</a>
</div>
</div>
</section>
{% endif %}
<section class="section"> <section class="section">
<div class="container"> <div class="container">
{% include 'notifications.html' %} {% include 'notifications.html' %}

View File

@ -7,6 +7,7 @@ urlpatterns = [
path("l/<slug:token>", views.login, name="token_login"), path("l/<slug:token>", views.login, name="token_login"),
path("logout", views.logout, name="token_logout"), path("logout", views.logout, name="token_logout"),
path("register", views.register, name="register"), path("register", views.register, name="register"),
path("asta", views.asta, name="asta"),
path("shift/<int:shiftid>", views.shift, name="shift"), path("shift/<int:shiftid>", views.shift, name="shift"),
path("shift/<int:shiftid>/cancel", views.cancel, name="cancel"), path("shift/<int:shiftid>/cancel", views.cancel, name="cancel"),
] ]

View File

@ -2,7 +2,7 @@ from django.shortcuts import render, redirect, get_object_or_404
from .models import Shift, LoginToken, Helper, ShiftRegistration from .models import Shift, LoginToken, Helper, ShiftRegistration
from django.db import transaction from django.db import transaction
from django.db.models import F, Count, Q, ExpressionWrapper from django.db.models import F, Count, Q, ExpressionWrapper
from .forms import RegisterForm, EmptyForm from .forms import RegisterForm, EmptyForm, AstaForm
from django.db.models.fields import DateTimeField from django.db.models.fields import DateTimeField
from datetime import timedelta from datetime import timedelta
from django.utils import timezone from django.utils import timezone
@ -249,3 +249,22 @@ def cancel(request, shiftid):
) )
return redirect("shift", shiftid=shiftid) return redirect("shift", shiftid=shiftid)
def asta(request):
if not request.helper:
return redirect("index")
form = AstaForm()
if request.method == "POST":
form = AstaForm(request.POST)
if AstaForm(request.POST).is_valid():
request.helper.asta_confirmed = True
request.helper.save()
messages.add_message(
request,
messages.SUCCESS,
"Deine AStA-Mitgliedschaft wurde gespeichert",
)
return redirect("index")
return render(request, "asta.html", {"form": form})