mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2025-12-16 17:37:06 +00:00
98 lines
4.4 KiB
Python
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)
|