aboutsummaryrefslogtreecommitdiffstats
path: root/accounts
diff options
context:
space:
mode:
authorAndrea Lepori <alepori@student.ethz.ch>2021-11-17 12:06:31 +0100
committerAndrea Lepori <alepori@student.ethz.ch>2021-11-17 12:06:48 +0100
commitdd4d3315c156d79c1141e3b44dae440364a693fb (patch)
tree41b66017e0239b18b07fd56524bb5cfdb32876eb /accounts
parentfix primary group not showing, rename of field (diff)
downloadscout-subs-dd4d3315c156d79c1141e3b44dae440364a693fb.tar.gz
scout-subs-dd4d3315c156d79c1141e3b44dae440364a693fb.zip
add account data validation
Diffstat (limited to 'accounts')
-rw-r--r--accounts/templates/accounts/index.html75
-rw-r--r--accounts/views.py29
2 files changed, 78 insertions, 26 deletions
diff --git a/accounts/templates/accounts/index.html b/accounts/templates/accounts/index.html
index 0b66290..0af8ce1 100644
--- a/accounts/templates/accounts/index.html
+++ b/accounts/templates/accounts/index.html
@@ -27,17 +27,22 @@
{% csrf_token %}
<div class="row">
<div class="input-field col l4 s12">
- <input name="first_name" value="{{first_name}}" id="first_name" type="text" >
+ <input name="first_name" value="{{first_name}}" id="first_name" type="text" {{validation_dic.first_name|safe}}>
<label for="first_name">Nome</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l4 s12">
- <input name="last_name" value="{{last_name}}" id="last_name" type="text" >
+ <input name="last_name" value="{{last_name}}" id="last_name" type="text" {{validation_dic.last_name|safe}}>
<label for="last_name">Cognome</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l4 s12">
- <input name="birth_date" value="{{birth_date}}" id="birth_date" type="text" class="datepicker">
+ <input name="birth_date" value="{{birth_date}}" id="birth_date" type="text" {{validation_dic.birth_date|safe}}>
<label for="birth_date">Data di nascita</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
+ </div>
+ <div class="row">
<div class="input-field col l4 s12">
<select name="branca" disabled>
<option value="" disabled {{branca_default}}>Nessuna</option>
@@ -50,47 +55,55 @@
<label>Branca</label>
</div>
<div class="input-field col l4 s12">
- <input value="{{parent_name}}" name="parent_name" id="parent_name" type="text" >
+ <input value="{{parent_name}}" name="parent_name" id="parent_name" type="text" {{validation_dic.parent_name|safe}}>
<label for="parent_name">Nome dei genitori</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l4 s12">
- <input value="{{avs_number}}" name="avs_number" id="avs_number" type="text" placeholder="756.1234.5678.90">
- <label for="avs_number">Numero AVS</label>
+ <input value="{{avs_number}}" name="avs_number" id="avs_number" type="text" placeholder="756.1234.5678.90" {{validation_dic.avs_number|safe}}>
+ <label for="avs_number" data-error="wrong">Numero AVS</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l12 s12">
- <input value="{{via}}" name="via" id="via" type="text" >
+ <input value="{{via}}" name="via" id="via" type="text" {{validation_dic.via|safe}}>
<label for="via">Via e numero</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l4 s12">
- <input value="{{cap}}" name="cap" id="cap" type="text" >
+ <input value="{{cap}}" name="cap" id="cap" type="text" {{validation_dic.cap|safe}}>
<label for="cap">CAP</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l4 s12">
- <input value="{{country}}" name="country" id="country" type="text" >
+ <input value="{{country}}" name="country" id="country" type="text" {{validation_dic.country|safe}}>
<label for="country">Comune</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l4 s12">
- <input value="{{nationality}}" name="nationality" id="nationality" type="text" >
+ <input value="{{nationality}}" name="nationality" id="nationality" type="text" {{validation_dic.nationality|safe}}>
<label for="nationality">Nazionalit&agrave;</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l4 s12">
- <input value="{{phone}}" name="phone" id="phone" type="text" >
+ <input value="{{phone}}" name="phone" id="phone" type="text" {{validation_dic.phone|safe}}>
<label for="phone">Cellulare</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l4 s12">
- <input value="{{home_phone}}" name="home_phone" id="home_phone" type="text" >
+ <input value="{{home_phone}}" name="home_phone" id="home_phone" type="text" {{validation_dic.home_phone|safe}}>
<label for="home_phone">Telefono di casa</label>
</div>
<div class="input-field col l4 s12">
- <input value="{{email}}" name="email" id="email" type="text" >
+ <input value="{{email}}" name="email" id="email" type="text" {{validation_dic.email|safe}}>
<label for="email">Email</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l8 s12">
- <input value="{{school}}" name="school" id="school" type="text" >
+ <input value="{{school}}" name="school" id="school" type="text" {{validation_dic.school|safe}}>
<label for="school">Scuola frequentata (o professione)</label>
</div>
<div class="input-field col l4 s12">
- <input value="{{year}}" name="year" id="year" type="text" >
+ <input value="{{year}}" name="year" id="year" type="text" {{validation_dic.year|safe}}>
<label for="year">Classe scolastica</label>
</div>
</div>
@@ -114,23 +127,27 @@
</div>
<div class="row">
<div class="input-field col l6 s12">
- <input name="emer_name" value="{{emer_name}}" id="emer_name" type="text" >
+ <input name="emer_name" value="{{emer_name}}" id="emer_name" type="text" {{validation_dic.emer_name|safe}}>
<label for="emer_name">Nome e cognome</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l3 s12">
- <input name="emer_relative" value="{{emer_relative}}" id="emer_relative" type="text" >
+ <input name="emer_relative" value="{{emer_relative}}" id="emer_relative" type="text" {{validation_dic.emer_relative|safe}}>
<label for="emer_releative">Parentela</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l3 s12">
- <input name="cell_phone" value="{{cell_phone}}" id="cellphone" type="text" >
+ <input name="cell_phone" value="{{cell_phone}}" id="cellphone" type="text" {{validation_dic.cell_phone|safe}}>
<label for="cell_phone">Cellulare</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l9 s12">
- <input value="{{address}}" name="address" id="address" type="text" >
+ <input value="{{address}}" name="address" id="address" type="text" {{validation_dic.address|safe}}>
<label for="address">Indirizzo completo</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l3 s12">
- <input value="{{emer_phone}}" name="emer_phone" id="emer_phone" type="text" >
+ <input value="{{emer_phone}}" name="emer_phone" id="emer_phone" type="text" {{validation_dic.emer_phone|safe}}>
<label for="emer_phone">Telefono di casa</label>
</div>
</div>
@@ -141,16 +158,19 @@
</div>
<div class="row">
<div class="input-field col l4 s12">
- <input value="{{health_care}}" name="health_care" id="health_care" type="text" >
+ <input value="{{health_care}}" name="health_care" id="health_care" type="text" {{validation_dic.health_care|safe}}>
<label for="health_care">Cassa Malati</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l4 s12">
- <input value="{{injuries}}" name="injuries" id="injuries" type="text" >
+ <input value="{{injuries}}" name="injuries" id="injuries" type="text" {{validation_dic.injuries|safe}}>
<label for="injuries">Infortuni</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l4 s12">
- <input value="{{rc}}" name="rc" id="rc" type="text" >
+ <input value="{{rc}}" name="rc" id="rc" type="text" {{validation_dic.rc|safe}}>
<label for="rc">Responsabilit&agrave; civile</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
</div>
<div class="row">
@@ -169,16 +189,19 @@
<h6>Medico di famiglia</h6>
</div>
<div class="input-field col l6 s12">
- <input value="{{medic_name}}" name="medic_name" id="medic_name" type="text" >
+ <input value="{{medic_name}}" name="medic_name" id="medic_name" type="text" {{validation_dic.medic_name|safe}}>
<label for="medic_name">Nome e cognome</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l6 s12">
- <input value="{{medic_phone}}" name="medic_phone" id="medic_phone" type="text" >
+ <input value="{{medic_phone}}" name="medic_phone" id="medic_phone" type="text" {{validation_dic.medic_phone|safe}}>
<label for="medic_phone">Telefono studio</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
<div class="input-field col l12 s12">
- <input value="{{medic_address}}" name="medic_address" id="medic_address" type="text" >
+ <input value="{{medic_address}}" name="medic_address" id="medic_address" type="text" {{validation_dic.medic_address|safe}}>
<label for="medic_address">Indirizzo completo</label>
+ <span class="helper-text" data-error="Campo richiesto"></span>
</div>
</div>
<div class="row">
diff --git a/accounts/views.py b/accounts/views.py
index 7038ccd..c73ecfd 100644
--- a/accounts/views.py
+++ b/accounts/views.py
@@ -93,6 +93,11 @@ def personal(request):
branca_pionieri = ""
branca_rover = ""
+ # variables for validation
+ validation_dic = {}
+ required_fields = ["first_name", "last_name", "email", "parent_name", "via", "cap", "country", "nationality", "phone", "avs_number", "emer_name", "emer_relative", "cell_phone", "address", "health_care", "injuries", "rc", "medic_name", "medic_phone", "medic_address"]
+
+
# variables for throwing errors to the user
error = False
error_text = ""
@@ -144,6 +149,7 @@ def personal(request):
usercode.phone = request.POST["phone"]
usercode.school = request.POST["school"]
usercode.avs_number = request.POST["avs_number"]
+
if request.POST["year"].isdigit():
usercode.year = request.POST["year"]
else:
@@ -174,6 +180,21 @@ def personal(request):
medic.misc = request.POST["misc"]
medic.save()
+ if request.POST["birth_date"] == "" or request.POST["birth_date"] == "01 Gennaio 1970" or request.POST["birth_date"] == "None":
+ validation_dic["birth_date"] = 'class="datepicker validate invalid" required="" aria-required="true"'
+ error = True
+ error_text = "Alcuni campi richiesti non sono stati compilati"
+ else:
+ validation_dic["birth_date"] = 'class="datepicker validate" required="" aria-required="true"'
+
+ for i in required_fields:
+ if request.POST[i] == "":
+ error = True
+ error_text = "Alcuni campi richiesti non sono stati compilati"
+ validation_dic[i] = 'class="validate invalid" required="" aria-required="true"'
+ else:
+ validation_dic[i] = 'class="validate" required="" aria-required="true"'
+
# if "branca" in request.POST:
# if request.POST["branca"] != "":
# request.user.groups.clear()
@@ -280,6 +301,12 @@ def personal(request):
if not error:
return HttpResponseRedirect("")
+ else:
+ # no post, create empty validation
+ validation_dic["birth_date"] = 'class="datepicker validate" required="" aria-required="true"'
+ for i in required_fields:
+ validation_dic[i] = 'class="validate" required="" aria-required="true"'
+
# check if user is in a group and set multiple choice to that
if len(request.user.groups.values_list('name', flat=True)) == 0:
branca_default = "selected"
@@ -323,8 +350,10 @@ def personal(request):
else:
card_name = ''
+
# fill context
context = {
+ 'validation_dic': validation_dic,
'first_name': request.user.first_name,
'last_name': request.user.last_name,
'email': request.user.email,