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"))