2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2025-12-16 17:37:06 +00:00
Files
troggle/core/views/signup.py

98 lines
4.4 KiB
Python

import os
import re
from pathlib import Path
import django.forms as forms
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import redirect, render
from django.urls import reverse
from django.views.decorators.csrf import ensure_csrf_cookie
import troggle.settings as settings
from troggle.core.utils import (
COOKIE_MAX_AGE,
WriteAndCommitError,
current_expo,
get_cookie,
git_string,
write_and_commit,
)
from troggle.core.views.editor_helpers import HTMLarea
from .auth import login_required_if_public
"""The new user signup form and expo user management system in 2025.
"""
@ensure_csrf_cookie
def signup(request):
if request.method == "POST": # If the form has been submitted...
pageform = ExpoSignupForm(request.POST) # A form bound to the POST data
if pageform.is_valid():
print(f"form OK")
who = pageform.cleaned_data["name"]
who = git_string(editor)
print(f"{who=}")
return render(
request,
"signup.html",
{"form": pageform,
"year": "2025", "dates": "30th June - 3rd August",
"name": f"{who}",
}
)
else:
pageform = ExpoSignupForm(initial={"allergies":"None", "medication":"None", "medic_info":"None", })
return render(
request,
"signup.html",
{"form": pageform,
"year": "2025", "dates": "30th June - 3rd August",
"name": "", "kinname": ""},
)
class ExpoSignupForm(forms.Form):
name = forms.CharField(label='Full name', max_length=100, widget=forms.TextInput(attrs={'tabindex': 1, 'placeholder': 'Anathema Device'}))
address = forms.CharField(widget=forms.Textarea(attrs={'rows': 7, 'cols': 20, 'tabindex': 2, 'placeholder': 'The Airfield,\nTadfield'}))
phone = forms.CharField(max_length=15, widget=forms.TextInput(attrs={'tabindex': 3, 'placeholder': '+44.1234567890'}))
email = forms.EmailField(widget=forms.TextInput(attrs={'tabindex': 4, 'placeholder': 'a.device@potatohut.expo'}))
kinname = forms.CharField(label='Next of Kin name', max_length=100, widget=forms.TextInput(attrs={'tabindex': 5, 'placeholder': 'Newton Pulsifer'}))
kinaddress = forms.CharField(widget=forms.Textarea(attrs={'rows': 7, 'cols': 20, 'tabindex': 6}))
kinphone = forms.CharField(max_length=15, widget=forms.TextInput(attrs={'tabindex': 7}))
kinemail = forms.EmailField(widget=forms.TextInput(attrs={'tabindex': 8}))
relation = forms.CharField(label='Relation to you', max_length=100, widget=forms.TextInput(attrs={'tabindex': 9, 'placeholder': 'Beau'}))
VEGGIE_CHOICES = [
('yes', 'Yes'),
('mostly', 'Mostly'),
('no', 'No'),
]
STUDENT_CHOICES = [
('yes', 'Yes'),
('no', 'No'),
]
veggie = forms.ChoiceField(choices=VEGGIE_CHOICES, widget=forms.RadioSelect(attrs={'tabindex': 10}))
student = forms.ChoiceField(choices=STUDENT_CHOICES, widget=forms.RadioSelect(attrs={'tabindex': 11}))
transport_ok = forms.ChoiceField(choices=[('yes', 'Yes'), ('no', 'No')],
widget=forms.RadioSelect(attrs={'tabindex': 12}), initial='yes')
transport_info = forms.CharField(widget=forms.Textarea(attrs={'rows': 6, 'cols': 80, 'tabindex': 13}),
required=False)
bivvy = forms.BooleanField(required=False, widget=forms.CheckboxInput(attrs={'tabindex': 14}))
tent = forms.BooleanField(required=False, widget=forms.CheckboxInput(attrs={'tabindex': 15}))
top_tent_cap = forms.IntegerField(required=False, widget=forms.NumberInput(attrs={'tabindex': 16}))
btent = forms.BooleanField(required=False, widget=forms.CheckboxInput(attrs={'tabindex': 17}))
base_tent_cap = forms.IntegerField(required=False, widget=forms.NumberInput(attrs={'tabindex': 18}))
allergies = forms.CharField(widget=forms.Textarea(attrs={'rows': 2, 'cols': 80, 'tabindex': 19}), required=False)
medication = forms.CharField(widget=forms.Textarea(attrs={'rows': 2, 'cols': 80, 'tabindex': 20}), required=False)
medic_info = forms.CharField(widget=forms.Textarea(attrs={'rows': 5, 'cols': 80, 'tabindex': 21}), required=False)
extra_info = forms.CharField(widget=forms.Textarea(attrs={'rows': 15, 'cols': 80, 'tabindex': 22}), required=False)
aims = forms.CharField(widget=forms.Textarea(attrs={'rows': 15, 'cols': 80, 'tabindex': 23}), required=False)