summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/views/expo.py71
-rw-r--r--templates/signup.html166
-rw-r--r--urls.py2
3 files changed, 239 insertions, 0 deletions
diff --git a/core/views/expo.py b/core/views/expo.py
index 019df18..a6abfc1 100644
--- a/core/views/expo.py
+++ b/core/views/expo.py
@@ -69,6 +69,33 @@ def spider(request, _):
return render(request, "pagenotfound.html", {"path": path}, status=404)
# return redirect("/?#") # so that suffixes applied by spider are no longer part of the url
+@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": ""},
+ )
+
def map(request):
"""Serves unadorned the expoweb/map/slippy/map.html file"""
fn = Path(settings.EXPOWEB, "map", "slippy", "map.html")
@@ -550,3 +577,47 @@ class ExpoPageForm(forms.Form):
label = "Editor"
)
+class ExpoSignupForm(forms.Form):
+ name = forms.CharField(label='Full name', max_length=100, widget=forms.TextInput(attrs={'tabindex': 1}))
+ address = forms.CharField(widget=forms.Textarea(attrs={'rows': 7, 'cols': 20, 'tabindex': 2}))
+ phone = forms.CharField(max_length=15, widget=forms.TextInput(attrs={'tabindex': 3}))
+ email = forms.EmailField(widget=forms.TextInput(attrs={'tabindex': 4}))
+
+ kinname = forms.CharField(label='Next of Kin name', max_length=100, widget=forms.TextInput(attrs={'tabindex': 5}))
+ 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}))
+
+ 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)
diff --git a/templates/signup.html b/templates/signup.html
new file mode 100644
index 0000000..e667a4e
--- /dev/null
+++ b/templates/signup.html
@@ -0,0 +1,166 @@
+<!-- signup.html - this text visible because this template has been included -->
+{% extends "base.html" %}
+
+{% block title %}
+
+Loser Expo 2025 SIGN-UP Form
+
+{% endblock %}
+
+{% block extraheaders %}
+{% include 'html_editor_scripts_css.html' %}
+{% endblock %}
+{% block content %}
+
+{% block head %}
+{% endblock %}
+{% load static %}
+
+ <style type="text/css">
+ body { font-family: sans-serif; margin-left: 8%; margin-right: 8%; margin-top: 4%; margin-bottom: 4% }
+ p.blocktext { margin-left: 48pt; margin-right: 48pt }
+ div.blocktext { margin-left: 48pt; margin-right: 48pt }
+ ul.blocktext { margin-left: 48pt; margin-right: 48pt }
+ ol.blocktext { margin-left: 48pt; margin-right: 48pt }
+ h1 { font-size: 24pt; line-height: 100% }
+ h2 { color: #009900 }
+ h2.blocktext { color: #009900; margin-left: 48pt }
+ h3 { color: #2c105e }
+ h3.blocktext { color: #2c105e; margin-left: 48pt }
+ h4 { color: #0d664c }
+ a:link { text-decoration: none }
+ a:visited { text-decoration: none }
+ table.cal { width: 100% }
+ tr.odd { background-color: #cccccc; height: 56pt }
+ tr.even { background-color: #eeeeee; height: 56pt }
+ tr.oddvac { background-color: #888888; height: 56pt }
+ tr.evenvac { background-color: #888888; height: 56pt }
+ tr.head { background-color: #999999; height: 36pt }
+ td.cellhead { width: 12%; text-align: center }
+ td.cell { width: 12%; font-size: 12pt }
+ td.cellvac { background-color: #888888; width: 12%; font-size: 12pt }
+ td.meet { background-color: #c6c699; width: 12%; font-size: 12pt; text-align: center }
+ td.other { background-color: #998db5; width: 12%; font-size: 12pt }
+ td.date { background-color: #999999; width: 12%; font-size: 12pt; text-align: right }
+ td.white { background-color: #ffffff; width: 12% }
+ div.right { float: right; margin-right: 48pt }
+ img.padleft { margin-left: 24pt }
+ span.l { background: #7f96e8 }
+ </style>
+
+ <title>Loser Expo {{year}} Sign-up Form</title>
+
+ <h1>Expo {{year}} Signup Form {{dates}}</h1>
+
+ <p>This is the official signup form for Expo {{year}}</p>
+ <p>This form is not secure and by submitting this form you consent to its contents being used for Expo purposes and being included in the Bier Book on Expo.</p>
+ <p>You also give permission for any information you collect on expo (survey data, photos, trip writeups, etc.) to be used in perpetuity for expo-related purposes.</p>
+ <p>BEFORE you fill out this form, you MUST sign up to the expo mailing list.
+ If you have not signed up to the mailing list, this form will FAIL and you will need to do it all again.
+
+ <hr>
+ <form action="{% url 'signup' %}" method="post">
+ {% csrf_token %}
+
+ <h2>Section A: Personal information</h2>
+
+ <h3>General</h3>
+
+ <table border="0">
+ <tr>
+ <td colspan="2"><b>Your details:</b></td>
+ <td colspan="2"><b>Next of kin:</b></td>
+ </tr>
+ <tr>
+ <td align="right"><i>Full</i> name:</td>
+ <td>{{ form.name }}</td>
+ <td align="right">Name:</td>
+ <td>{{ form.kinname }}</td>
+ </tr>
+ <tr>
+ <td align="right">Address:</td>
+ <td>{{ form.address }}</td>
+ <td align="right">Address:</td>
+ <td>{{ form.kinaddress }}</td>
+ </tr>
+ <tr>
+ <td align="right">Phone:</td>
+ <td>{{ form.phone }}</td>
+ <td align="right">Phone:</td>
+ <td>{{ form.kinphone }}</td>
+ </tr>
+ <tr>
+ <td align="right">Email:</td>
+ <td>{{ form.email }}</td>
+ <td align="right">Email:</td>
+ <td>{{ form.kinemail }}</td>
+ </tr>
+ <tr>
+ <td colspan="2"></td>
+ <td align="right">Relation to you:</td>
+ <td>{{ form.relation }}</td>
+ </tr>
+ </table>
+
+ <table width="100%">
+ <tr>
+ <td><b>Are you a vegetarian?</b></td>
+ <td><b>Are you a student/unwaged?</b></td>
+ </tr>
+ <tr>
+ <td>{{ form.veggie }}</td>
+ <td>{{ form.student }}</td>
+ </tr>
+
+
+
+ <h3>Transport</h3>
+ <p>Please look now at the <a target="_blank" href="http://expo.survex.com/years/2024/travel.html">transport arrangements page</a> (will open in a new window). Then select one of the following:</p>
+
+ <p>{{ form.transport_ok }}</p>
+
+ <p>If your arrangements are shown incorrectly, then please state the corrected version in the box below. This will automatically be emailed to the transport co-ordinator.</p>
+ <p>{{ form.transport_info }}</p>
+
+ <h3>Tents</h3>
+ <p>There will be two high camps in 2025:</p>
+ <ul>
+ <li>the stone bridge bivvy site;</li>
+ <li>Garlic Cave.</li>
+ </ul>
+ <p>There is space for three people in a Club tent at Base Camp. At the stone bridge, a bivvy bag is not essential but useful if you have one.</p>
+ <p>Will you be taking any of the following (please tick/complete as appropriate):</p>
+ <p>{{ form.bivvy }}</p>
+ <p>{{ form.tent }} A {{ form.top_tent_cap }} person tent for the Top Camp site.</p>
+ <p>{{ form.btent }} A {{ form.base_tent_cap }} person tent for Base Camp.</p>
+ <p>Leave the boxes unchecked if you require Club tent space at a particular site.</p>
+
+ <h3>Medical</h3>
+ <p>The medical information entered here will appear in the Bier Book. Extra medical information may be communicated to
+ <a href="mailto:mjg54&#64cam.ac.uk">Martin Green</a>; this will be placed in sealed envelopes inside the large first aid kits for use in case of emergency. Please ensure that you communicate such information in good time.</p>
+ <p>Please list any allergies which you have:</p>
+ <p>{{ form.allergies }}</p>
+ <p>Please list any medication which you may be taking in Austria:</p>
+ <p>{{ form.medication }}</p>
+ <p>Please list any other medical conditions you have that the expedition should be aware of:</p>
+ <p>{{ form.medic_info }}</p>
+
+ <h3>Other</h3>
+ <p>Any other information, including any skills e.g. first aid, languages, etc. that you have:</p>
+ <p>{{ form.extra_info }}</p>
+
+ <h2>Section B - Caving/surface work projects</h2>
+ <p>To assist organisation of gear, it would be helpful to know people's possible aims on Expo. Thus if you have a particular project in mind, please state it below:</p>
+ <p>{{ form.aims }}</p>
+
+ <hr>
+
+ <h2>All done?</h2>
+ <p>Click the <b>Preview</b> button below to review your submission.</p>
+ <input type="submit" value="Preview form submission">
+ </form>
+
+ <hr>
+ <p>Please report any problems with this form to the <a href="mailto:wookey-expo@wookware.org">webmaster</a>.</p>
+{% endblock %}
+ \ No newline at end of file
diff --git a/urls.py b/urls.py
index aa0a8d4..738e502 100644
--- a/urls.py
+++ b/urls.py
@@ -34,6 +34,7 @@ from troggle.core.views.expo import (
mediapage,
pubspage,
spider,
+ signup,
)
from troggle.core.views.logbook_edit import logbookedit
from troggle.core.views.logbooks import (
@@ -153,6 +154,7 @@ trogglepatterns = [
path('dwguploadnogit/<path:folder>', dwgupload, {'gitdisable': 'yes'}, name='dwguploadnogit'), # used in testing
path('logbookedit/', logbookedit, name='logbookedit'),
path('logbookedit/<slug:slug>', logbookedit, name='logbookedit'),
+ path('sign_up', signup, name='signup'),
# Renaming an uploaded file
path('expofilerename/<path:filepath>', expofilerename, name='expofilerename'),