diff --git a/core/views/new_hole.py b/core/views/new_hole.py new file mode 100644 index 000000000..388807448 --- /dev/null +++ b/core/views/new_hole.py @@ -0,0 +1,52 @@ +from django import forms + +class NewHoleForm(forms.Form): + # Identification + tag_id = forms.CharField(label="Cave Tag Identifier", max_length=50) + tag_text = forms.CharField(label="Exact text on tag", widget=forms.Textarea(attrs={'rows': 2})) + + # Discovery + discoverers = forms.CharField(label="Discoverers", max_length=255) + discovery_date = forms.DateField(label="Discovery date", widget=forms.DateInput(attrs={'type': 'date'})) + surface_wallet = forms.CharField(label="Surface survey Wallet", max_length=100) + + # GPS Data + gps_owner = forms.CharField(label="GPS: Whose?", max_length=100) + gps_coords = forms.CharField(label="GPS Coordinates", max_length=100) + gps_dt = forms.DateTimeField(label="Time & date of GPS reading", widget=forms.DateTimeInput(attrs={'type': 'datetime-local'})) + gps_screenshot = forms.BooleanField(label="Screenshot taken of GPS reading?", required=False) + + # Navigation + dist_to_ent = forms.FloatField(label="Distance from GPS to entrance (m)") + bear_to_ent = forms.FloatField(label="Compass bearing to entrance (degrees)") + + # Status & Surveys + is_explored = forms.BooleanField(label="Completely explored?", required=False) + ug_survey_done = forms.BooleanField(label="Underground survey conducted?", required=False) + ug_survey_wallet = forms.CharField(label="Underground Wallet Name", required=False) + + # Media + PHOTO_CHOICES = [('no', 'No'), ('upload', 'Upload now'), ('on_camera', 'On camera (specify who)')] + photo_ent = forms.ChoiceField(label="Photo of entrance?", choices=PHOTO_CHOICES) + photo_ent_who = forms.CharField(label="Who has entrance photo?", required=False) + photo_tag = forms.ChoiceField(label="Photo of tag?", choices=PHOTO_CHOICES) + photo_tag_who = forms.CharField(label="Who has tag photo?", required=False) + + # Naming + proposed_name = forms.CharField(label="Proposed Cave Name", max_length=255) + + +from django.shortcuts import render, redirect +from django.contrib import messages + +def new_hole(request): + if request.method == 'POST': + form = NewHoleForm(request.POST, request.FILES) + if form.is_valid(): + # Data processing to models and filesystem will go here + messages.success(request, "New cave data successfully received.") + return redirect('some_success_url') + else: + form = NewHoleForm() + + return render(request, 'new_hole.html', {'form': form}) \ No newline at end of file diff --git a/templates/new_hole.html b/templates/new_hole.html new file mode 100644 index 000000000..d755afb48 --- /dev/null +++ b/templates/new_hole.html @@ -0,0 +1,53 @@ +{% extends "cavebase.html" %} + +{% block title %}New Cave Creation Form{% endblock %} + +{% block extraheaders %} + +{% endblock %} + +{% block content %} +
Please fill this out to record a new discovery in the field. This data matches the physical New Cave Data Sheet.
+Consult the cave entry fields documentation if you are unsure about specific requirements.
+Ensure that the physical data sheet is placed in the plastic wallet with survey notes and sketches before returning to base.
+{% endblock %} \ No newline at end of file diff --git a/urls.py b/urls.py index a01230b71..be1cdcb2a 100644 --- a/urls.py +++ b/urls.py @@ -7,6 +7,7 @@ from django.urls import include, path, re_path from troggle.core.views import survex from troggle.core.views.auth import expologin, expologout +from troggle.core.views.new_hole import new_hole from troggle.core.views.caves import ( cave3d, cave_debug, @@ -257,6 +258,8 @@ trogglepatterns = [ re_path(r'^getLogBookEntries/(?P