| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- from django.shortcuts import render
- from django.http import HttpResponse,HttpResponseRedirect,FileResponse
- from django.urls import reverse
- import django
- from .forms import *
- from config.views import getConfig
- from comunicazione.views import ServizioMail
- from att.views import *
- import uuid
- from utente.models import *
- from amministratore.models import *
- def start(request):
- '''
- da qui si comincia
- l'utente e' invitato a inserire il suo codice fiscale e la password/pin assegnata in fase di visita medica
- se i dati corrispondono, si forniscono i file e alcune info di servizio
- '''
- request.session.flush()
- request.session.set_expiry(3600)
- data = dict()
- data['HeaderTitle'] = getConfig('HeaderTitle')
- if request.method=="POST":
- result = LoginUser(request.POST)
- if result.is_valid():
- accesso = result.cleaned_data['cfisc']
- pin = result.cleaned_data['passs']
- #verifica corrispondenza utente
- u = None
- try:
- # verifica che esista un utente ordinario
- u = Utente.objects.get(codicefiscale=accesso.upper())
- except Utente.DoesNotExist as dne:
- print("non ci provare")
- u = None
- if u: #utente esiste
- if u.pin.strip()== pin:
- # password valida
- data = dict()
- data['u'] = u
- #data['settings'] = settings
- #data['static'] = static
- request.session['UserId'] = u.id
- print('utente validato:',u.nome)
- setLog(1,utente=u)
- #setNewLog(1,{'u':u.nome})
- ### comunicazioni ###
- if len(u.mail) > 0:
- comunicazione = None
- try:
- comunicazione = Comunicazione.objects.get(pk=2)
- except Comunicazione.DoesNotExist as dne:
- print('comunicazione non valida',dne)
- if comunicazione:
- sm = ServizioMail(debug=True)
- sm.set_mailfrom=comunicazione.mittente
- sm.add_to(u.mail)
- sm.set_soggetto(comunicazione.soggetto)
- sm.set_corpo(comunicazione.corpo)
- sm_data = dict()
- sm_data['utente'] = u
- sm.set_data(sm_data)
- sm.send()
- ### comunicazioni ###
- return HttpResponseRedirect(reverse("utente:download"))
- else: # l'utente ordinario non esiste
- print('verifica amministratore')
-
- a = None
- try:
- print(dir(Amministratore))
- a = Amministratore.objects.get(login=accesso.strip())
- if a:
- print('login trovato',a)
- except Amministratore.DoesNotExist as dne:
- print('amministratore non trovato',dne)
- a = None
- if a:
- request.session['AdminId'] = a.id
- setLog(1,amministratore=a)
- ### comunicazioni ###
- sm = ServizioMail(debug=True)
- comunicazione = None
- try:
- comunicazione = Comunicazione.objects.get(pk=1)
- except Comunicazione.DoesNotExist as dne:
- print("Record comunicazione inesistente",dne)
- if comunicazione:
- sm.set_mailfrom=comunicazione.mittente
- sm.add_to(a.mail)
- sm.set_soggetto(comunicazione.soggetto)
- sm.set_corpo(comunicazione.corpo)
- sm_data = dict()
- utente=dict() #adattamento campo utente
- utente['nome'] = a.nome
- utente['mail'] = a.mail
- sm_data['utente'] = a
- sm.set_data(sm_data)
- sm.send()
- ### comunicazioni ###
- return HttpResponseRedirect(reverse("azienda:welcome"))
- else:
- temp={}
- temp['cfisc'] = ''
- temp['passs'] = ''
- result = LoginUser(temp)
- data['login'] = result
- return render(request,'login.html',data)
- def RichiestaAggiornamentoPassword(request):
- '''
- la form che segue, serve per aggiornare la propria password/pin
- '''
- data = dict()
- request.session.flush()
- request.session.set_expiry(3600)
- data = dict()
- data['HeaderTitle'] = getConfig('HeaderTitle')
- uuidres = str(uuid.uuid4())
- print('uuid',uuidres)
- if request.method == 'POST':
- informazione = PasswordUpdate(request.POST)
- if informazione.is_valid():
- # invio mail di comunicazione
- # con pin annesso.
- informazione = informazione.cleaned_data.get('informazione')
- print('informazione',informazione)
- a = None
- d = None
- # 1 tentativo su codice fiscale
- try:
- a = Utente.objects.get(codicefiscale=informazione)
- d = 'u'
- except Utente.DoesNotExist as dne:
- print('informazione non trovata tra i codici fiscali utente')
- try:
- a = Utente.objects.get(mail=informazione)
- d = 'u'
- except Utente.DoesNotExist as dne:
- print('informazione non trovata tra le email')
- try:
- a = Amministratore.objects.get(login=informazione)
- except Amministrazione.DoesNotExist as dne:
- print('informazione non trovata tra i login amministratotore')
- if a:
- print('informazione',a,d)
- ### comunicazioni ###
- sm = ServizioMail(debug=True)
- comunicazione = None
- try:
- comunicazione = Comunicazione.objects.get(pk=4)
- except Comunicazione.DoesNotExist as dne:
- print("Record comunicazione inesistente",dne)
- if comunicazione:
- sm.set_mailfrom=comunicazione.mittente
- sm.add_to(a.mail)
- sm.set_soggetto(comunicazione.soggetto)
- sm.set_corpo(comunicazione.corpo)
- sm_data = dict()
- utente=dict() #adattamento campo utente
- print(reverse('login:ResetPassword',args=[uuidres]))
- utente['link'] = reverse('login:ResetPassword',args=[uuidres])
- utente['nome'] = a.nome
- utente['mail'] = a.mail
- sm_data['utente'] = utente
- sm.set_data(sm_data)
- sm.send()
- ### comunicazioni ###
- return HttpResponseRedirect(reverse("login:start"))
- else:
- data['informazione'] = PasswordUpdate(request.POST)
- else:
- data['informazione'] = PasswordUpdate({'informazione':''})
- return render(request,'updatePassword.html',data)
- def ResetPassword(request,uuid=None):
- print('uuid',uuid)
- return HttpResponseRedirect(reverse("login:start"))
|