aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--accounts/templates/accounts/index.html84
-rw-r--r--accounts/views.py371
-rw-r--r--version.txt2
3 files changed, 2 insertions, 455 deletions
diff --git a/accounts/templates/accounts/index.html b/accounts/templates/accounts/index.html
index 6de7d1c..921cc81 100644
--- a/accounts/templates/accounts/index.html
+++ b/accounts/templates/accounts/index.html
@@ -9,24 +9,12 @@
{% block toolbar %}
<div class="nav-content {{color}}">
<ul class="tabs tabs-transparent">
- <!--
- <li class="tab"><a class="{{personal_active}}" href="#personal">Info Personali</a></li>
- <li class="tab"><a class="{{medic_active}}" href="#medic">Info Mediche</a></li>
- -->
<li class="tab"><a class="{{settings_active}}" href="#settings">Impostazioni</a></li>
</ul>
</div>
{% endblock%}
{% block content %}
-<div class="tap-target {{color}}" data-target="home_btn">
- <div class="tap-target-content">
- <h5 style="color:white">Continua l'attivazione</h5>
- <p style="color:white">Usa questo pulsante per tornare alla home e continuare il processo d'attivazione</p>
- </div>
-</div>
-
-<form action="{% url 'personal'%}?saved=true" method="post" id="form1" enctype="multipart/form-data">
<div id="settings" class="row">
<div class="col l8 offset-l2 s12">
<div class="card-panel">
@@ -76,89 +64,17 @@
{% endblock %}
{% block script %}
-function send(id) {
- $('#form1').trigger('reinitialize.areYouSure');
- var form = document.getElementById('form1');
- var action = document.getElementById('action');
- action.setAttribute('value', id);
- $(':disabled').each(function(e) {
- $(this).removeAttr('disabled');
- })
- form.submit();
-}
-
-function delete_vac() {
- var action = document.getElementById('delete_vac');
- var text = document.getElementById('vac_file');
- action.setAttribute('value', 'vac');
- text.setAttribute('value', '');
-}
-
-function delete_health() {
- var action = document.getElementById('delete_health');
- var text = document.getElementById('health_care_file');
- action.setAttribute('value', 'health');
- text.setAttribute('value', '');
-}
var elem = $('.tabs')
-var options = {
- yearRange:100,
- format:'dd mmmm yyyy',
- i18n: {
- months: [ 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre' ],
- monthsShort: [ 'gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic' ],
- weekdays: [ 'domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato' ],
- weekdaysShort: [ 'dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab' ],
- weekdaysAbbrev: [ 'D', 'L', 'M', 'M', 'G', 'V', 'S' ],
- today: 'Oggi',
- clear: 'Cancella',
- close: 'Chiudi',
- firstDay: 1,
- format: 'dddd d mmmm yyyy',
- formatSubmit: 'yyyy/mm/dd',
- labelMonthNext: 'Mese successivo',
- labelMonthPrev: 'Mese precedente',
- labelMonthSelect: 'Seleziona un mese',
- labelYearSelect: 'Seleziona un anno'
- }
-}
$(document).ready(function() {
- $('input#sickness, input#vaccine, input#allergy, input#drugs, input#misc').characterCounter();
- $('.datepicker').datepicker(options);
$('.tabs').tabs();
- $('select').formSelect();
- $('.tap-target').tapTarget();
{% for error in errors %}
M.toast({html: '{{ error }}', classes: 'orange'})
{% endfor %}
{% if ok_message %}
M.toast({html: '{{ ok_message }}', classes: 'green'})
{% endif %}
- {% if home_tooltip %}
- $('.tap-target').tapTarget('open');
- {% endif %}
- document.getElementById("vac_certificate").onchange = function() {
- for (i=0; i < this.files.length; i++) {
- if(this.files[i].size > 1048576*10) {
- M.toast({html: 'Il file è troppo grande. Grandezza massima 10MB', classes: 'orange'});
- this.value = "";
- break;
- }
- }
- };
-
- document.getElementById("health_care_certificate").onchange = function() {
- for (i=0; i < this.files.length; i++) {
- if(this.files[i].size > 1048576*10) {
- M.toast({html: 'Il file è troppo grande. Grandezza massima 10MB', classes: 'orange'});
- this.value = "";
- break;
- }
- }
- };
-
});
/*!
diff --git a/accounts/views.py b/accounts/views.py
index 145fa9e..a76ba8d 100644
--- a/accounts/views.py
+++ b/accounts/views.py
@@ -376,61 +376,9 @@ def personal(request):
def personal_wrapper(request, errors):
context = {}
ok_message = ""
- personal_active = "active"
- medic_active = ""
- settings_active = ""
- # additional user information
- usercode = UserCode.objects.filter(user=request.user)[0]
- # medical info
- medic = usercode.medic
- # values for multiple choice box
- # TODO remove multiple choice
- branca_default = ""
- branca_castorini = ""
- branca_lupetti = ""
- branca_esploratori = ""
- 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"]
- personal_fields = ["first_name", "last_name", "email", "parent_name", "via", "cap", "country", "nationality", "phone", "avs_number"]
- medic_fields = ["emer_name", "emer_relative", "cell_phone", "address", "health_care", "injuries", "rc", "medic_name", "medic_phone", "medic_address"]
if request.method == "POST":
- # requested download
- if request.POST['action'] == "download_vac":
- if medic.vac_certificate != None:
- filename = os.path.basename(medic.vac_certificate.name)
- filename = filename[filename.find("_")+1:]
- if filename.rfind('.') != -1:
- filename = filename[:filename.rfind('.')]
- filename = filename + ".jpg"
-
- # encode in JPEG
- im = Image.open(medic.vac_certificate.file)
- im_io = BytesIO()
- im.save(im_io, 'JPEG', quality=90)
- im_io.seek(0)
- return FileResponse(im_io, as_attachment=True, filename=filename)
-
- elif request.POST['action'] == "download_health":
- if medic.health_care_certificate != None:
- filename = os.path.basename(medic.health_care_certificate.name)
- filename = filename[filename.find("_")+1:]
- if filename.rfind('.') != -1:
- filename = filename[:filename.rfind('.')]
- filename = filename + ".jpg"
-
- # encode in JPEG
- im = Image.open(medic.health_care_certificate.file)
- im_io = BytesIO()
- im.save(im_io, 'JPEG', quality=90)
- im_io.seek(0)
- return FileResponse(im_io, as_attachment=True, filename=filename)
-
- elif request.POST['action'] == "password":
+ if request.POST['action'] == "password":
# get form object
if request.user.has_usable_password():
form2 = PasswordChangeForm(data=request.POST, user=request.user)
@@ -441,11 +389,7 @@ def personal_wrapper(request, errors):
if form2.is_valid():
form2.save()
ok_message = "Password modificata con successo"
- personal_active = ""
- settings_active = "active"
else:
- personal_active = ""
- settings_active = "active"
for field in form2.errors.as_data().values():
for err in field:
if err.code == "password_mismatch":
@@ -461,296 +405,14 @@ def personal_wrapper(request, errors):
elif err.code == "password_incorrect":
errors.append("La password attuale è incorretta")
- else:
- # set all attributes
- request.user.first_name = request.POST["first_name"]
- request.user.last_name = request.POST["last_name"]
- request.user.email = request.POST["email"]
- request.user.save()
- usercode.parent_name = request.POST["parent_name"]
- usercode.via = request.POST["via"]
- usercode.cap = request.POST["cap"]
- usercode.country = request.POST["country"]
- usercode.nationality = request.POST["nationality"]
- usercode.born_date = dateparser.parse(request.POST["birth_date"])
- usercode.home_phone = request.POST["home_phone"]
- 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:
- errors.append("L'anno scolastico deve essere un numero")
-
- usercode.save()
-
- medic.emer_name = request.POST["emer_name"]
- medic.emer_relative = request.POST["emer_relative"]
- medic.cell_phone = request.POST["cell_phone"]
- medic.address = request.POST["address"]
- medic.emer_phone = request.POST["emer_phone"]
- medic.health_care = request.POST["health_care"]
- medic.injuries = request.POST["injuries"]
- medic.rc = request.POST["rc"]
- medic.rega = "rega" in request.POST
- medic.medic_name = request.POST["medic_name"]
- medic.medic_phone = request.POST["medic_phone"]
- medic.medic_address = request.POST["medic_address"]
- medic.sickness = request.POST["sickness"]
- medic.vaccine = request.POST["vaccine"]
- medic.tetanus_date = dateparser.parse(request.POST["tetanus_date"])
- medic.allergy = request.POST["allergy"]
- medic.drugs_bool = "drugs_bool" in request.POST
- medic.drugs = request.POST["drugs"]
- medic.misc_bool = "misc_bool" in request.POST
- medic.misc = request.POST["misc"]
- medic.save()
-
- missing_fields = False
- missing_personal_field = False
-
- 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"'
- missing_fields = True
- missing_personal_field = True
- else:
- validation_dic["birth_date"] = 'class="datepicker validate" required="" aria-required="true"'
-
- for i in required_fields:
- if request.POST[i] == "":
- missing_fields = True
- if i in personal_fields:
- missing_personal_field = True
- validation_dic[i] = 'class="validate invalid" required="" aria-required="true"'
- else:
- validation_dic[i] = 'class="validate" required="" aria-required="true"'
-
- if missing_fields:
- errors.append("Alcuni campi richiesti non sono stati compilati")
- if not missing_personal_field:
- personal_active = ""
- medic_active = "active"
-
- # if "branca" in request.POST:
- # if request.POST["branca"] != "":
- # request.user.groups.clear()
- # request.user.groups.add(
- # Group.objects.get(name=request.POST["branca"]))
-
- # check if user uploaded a file
- if "vac_certificate" in request.FILES:
- files = request.FILES.getlist('vac_certificate')
- name = files[0].name
- try:
- # if multiple files concatenate pictures
- im = Image.new("RGB", (0, 0), (255, 255, 255))
- for f in files:
- if f.name.endswith(".pdf") or f.name.endswith(".PDF"):
- images = convert_from_bytes(f.read())
- for i in images:
- dst = Image.new('RGB', (max(im.width, i.width), im.height + i.height), (255, 255, 255))
- dst.paste(im, (0, 0))
- dst.paste(i, (0, im.height))
- im = dst
- else:
- i = Image.open(f)
- dst = Image.new('RGB', (max(im.width, i.width), im.height + i.height), (255, 255, 255))
- dst.paste(im, (0, 0))
- dst.paste(i, (0, im.height))
- im = dst
-
- im_io = BytesIO()
- # resize image if larger than max value
- if im.height > 16383:
- im = im.resize((round(im.width/im.height*16383), 16383))
- # compress image in WEBP
- im.save(im_io, 'WEBP', quality=50, method=4)
- medic.vac_certificate.save(
- request.user.username+"_"+name, im_io)
- medic.save()
- except UnidentifiedImageError:
- errors.append("Il certificato delle vaccinazioni non è un immagine valida")
- except PDFPageCountError:
- errors.append("Il certificato delle vaccinazioni non è un pdf valido")
- except PDFSyntaxError:
- errors.append("Il certificato delle vaccinazioni non è un pdf valido")
- except IOError:
- errors.append("Il certificato delle vaccinazioni è un immagine troppo grande")
-
- if "health_care_certificate" in request.FILES:
- files = request.FILES.getlist('health_care_certificate')
- name = files[0].name
- try:
- # if multiple files concatenate pictures
- im = Image.new("RGB", (0, 0), (255, 255, 255))
- for f in files:
- if f.name.endswith(".pdf") or f.name.endswith(".PDF"):
- images = convert_from_bytes(f.read())
- for i in images:
- dst = Image.new('RGB', (max(im.width, i.width), im.height + i.height), (255, 255, 255))
- dst.paste(im, (0, 0))
- dst.paste(i, (0, im.height))
- im = dst
- else:
- i = Image.open(f)
- dst = Image.new('RGB', (max(im.width, i.width), im.height + i.height), (255, 255, 255))
- dst.paste(im, (0, 0))
- dst.paste(i, (0, im.height))
- im = dst
-
- im_io = BytesIO()
- # resize image if larger than max value
- if im.height > 16383:
- im = im.resize((round(im.width/im.height*16383), 16383))
- # compress image in WEBP
- im.save(im_io, 'WEBP', quality=50, method=4)
- medic.health_care_certificate.save(
- request.user.username+"_"+name, im_io)
- medic.save()
- except UnidentifiedImageError:
- errors.append("La tessera della cassa malati non è un immagine valida")
- except PDFPageCountError:
- errors.append("La tessera della cassa malati non è un pdf valido")
- except PDFSyntaxError:
- errors.append("La tessera della cassa malati non è un pdf valido")
- except IOError:
- errors.append("La tessera della cassa malati è un immagine troppo grande")
-
- # user requested file delete
- if request.POST["delete_vac"] == 'vac':
- medic.vac_certificate = None
- medic.save()
-
- if request.POST["delete_health"] == 'health':
- medic.health_care_certificate = None
- medic.save()
-
- # if there wasn't any error redirect to clear POST
- if len(errors) == 0:
- return HttpResponseRedirect(request.get_full_path())
-
- 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"
- else:
- parent_group = request.user.groups.values_list('name', flat=True)[0]
- if parent_group == "diga":
- branca_castorini = "selected"
- elif parent_group == "muta":
- branca_lupetti = "selected"
- elif parent_group == "reparto":
- branca_esploratori = "selected"
- elif parent_group == "posto":
- branca_pionieri = "selected"
- elif parent_group == "clan":
- branca_rover = "selected"
- else:
- branca_default = "selected"
-
- # set checkbox status
- rega = ""
- if medic.rega:
- rega = "checked='checked'"
- drugs = ""
- if medic.drugs_bool:
- drugs = "checked='checked'"
- misc = ""
- if medic.misc_bool:
- misc = "checked='checked'"
-
- # set file name for uploaded files
- if (medic.vac_certificate != None):
- vac_name = os.path.basename(medic.vac_certificate.name)
- vac_name = vac_name[vac_name.find("_")+1:]
- else:
- vac_name = ''
-
- if (medic.health_care_certificate != None):
- card_name = os.path.basename(medic.health_care_certificate.name)
- card_name = card_name[card_name.find("_")+1:]
- else:
- card_name = ''
-
- # check if user is connected with midata
- midata_user = (usercode.midata_id > 0)
- midata_disable = ""
-
- # get user info from midata
- if midata_user:
- midata_disable = " readonly disabled"
- if not copy_from_midata(request, usercode):
- return HttpResponseRedirect(request.get_full_path())
-
usable_password = request.user.has_usable_password()
- # check if user has saved the form
- home_tooltip = False
- if "saved" in request.GET:
- # show tooltip only if user is not approved and there are no errors
- home_tooltip = (not request.user.has_perm("client.approved")) and (len(errors) == 0)
-
# fill context
context = {
- 'validation_dic': validation_dic,
- 'first_name': request.user.first_name,
- 'last_name': request.user.last_name,
'email': request.user.email,
- 'parent_name': usercode.parent_name,
- 'via': usercode.via,
- 'cap': usercode.cap,
- 'country': usercode.country,
- 'nationality': usercode.nationality,
- 'birth_date': usercode.born_date,
- 'home_phone': usercode.home_phone,
- 'phone': usercode.phone,
- 'school': usercode.school,
- 'year': usercode.year,
- 'avs_number': usercode.avs_number,
- 'branca_default': branca_default,
- 'branca_castorini': branca_castorini,
- 'branca_lupetti': branca_lupetti,
- 'branca_esploratori': branca_esploratori,
- 'branca_pionieri': branca_pionieri,
- 'branca_rover': branca_rover,
- 'emer_name': medic.emer_name,
- 'emer_relative': medic.emer_relative,
- 'cell_phone': medic.cell_phone,
- 'address': medic.address,
- 'emer_phone': medic.emer_phone,
- 'health_care': medic.health_care,
- 'injuries': medic.injuries,
- 'rc': medic.rc,
- 'rega_check': rega,
- 'medic_name': medic.medic_name,
- 'medic_phone': medic.medic_phone,
- 'medic_address': medic.medic_address,
- 'sickness': medic.sickness,
- 'vaccine': medic.vaccine,
- 'tetanus_date': medic.tetanus_date,
- 'allergy': medic.allergy,
- 'drugs_check': drugs,
- 'drugs': medic.drugs,
- 'misc_check': misc,
- 'misc': medic.misc,
- 'health_care_certificate': card_name,
- 'vac_certificate': vac_name,
'errors': errors,
'ok_message': ok_message,
- 'midata_user': midata_user,
- 'midata_disable': midata_disable,
'usable_password': usable_password,
- 'personal_active': personal_active,
- 'medic_active': medic_active,
- 'settings_active': settings_active,
- 'midata_enabled': MIDATA_ENABLED,
- 'home_tooltip': home_tooltip,
}
return render(request, 'accounts/index.html', context)
@@ -832,37 +494,6 @@ def edit(request, code):
im_io.seek(0)
return FileResponse(im_io, as_attachment=True, filename=filename)
- elif request.POST['action'] == "password":
- # get form object
- if request.user.has_usable_password():
- form2 = PasswordChangeForm(data=request.POST, user=request.user)
- else:
- form2 = SetPasswordForm(data=request.POST, user=request.user)
-
- # if form is valid and terms were accepted save user
- if form2.is_valid():
- form2.save()
- ok_message = "Password modificata con successo"
- personal_active = ""
- settings_active = "active"
- else:
- personal_active = ""
- settings_active = "active"
- for field in form2.errors.as_data().values():
- for err in field:
- if err.code == "password_mismatch":
- errors.append("Le due password non sono uguali")
- elif err.code == "password_too_similar":
- errors.append("La password è troppo simile all'username")
- elif err.code == "password_too_short":
- errors.append("La password è troppo corta")
- elif err.code == "password_too_common":
- errors.append("La password è troppo comune")
- elif err.code == "password_entirely_numeric":
- errors.append("La password deve contenere lettere")
- elif err.code == "password_incorrect":
- errors.append("La password attuale è incorretta")
-
elif request.POST['action'] == "delete_uc":
confirm_name = request.POST['del_name']
correct_name = usercode.first_name + " " + usercode.last_name
diff --git a/version.txt b/version.txt
index e9da2e4..3647ad5 100644
--- a/version.txt
+++ b/version.txt
@@ -1,2 +1,2 @@
version=0.6
-rev=29
+rev=30