views.py 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. from django.shortcuts import render
  2. from django.http import HttpResponse,HttpResponseRedirect,FileResponse
  3. from django.urls import reverse
  4. import django
  5. from .forms import *
  6. from config.views import getConfig
  7. from comunicazione.views import ServizioMail
  8. from att.views import *
  9. #from utente.views import *
  10. import uuid
  11. from utente.models import *
  12. from amministratore.models import *
  13. def start(request):
  14. '''
  15. da qui si comincia
  16. l'utente e' invitato a inserire il suo codice fiscale e la password/pin assegnata in fase di visita medica
  17. se i dati corrispondono, si forniscono i file e alcune info di servizio
  18. '''
  19. request.session.flush()
  20. request.session.set_expiry(3600)
  21. data = dict()
  22. data['HeaderTitle'] = getConfig('HeaderTitle')
  23. if request.method=="POST":
  24. result = LoginUser(request.POST)
  25. if result.is_valid():
  26. accesso = result.cleaned_data['cfisc']
  27. pin = result.cleaned_data['passs']
  28. #verifica corrispondenza utente
  29. u = None
  30. try:
  31. # verifica che esista un utente ordinario
  32. u = Utente.objects.get(codicefiscale=accesso.upper())
  33. except Utente.DoesNotExist as dne:
  34. print("non ci provare")
  35. u = None
  36. if u: #utente esiste
  37. if u.pin.strip()== pin:
  38. # password valida
  39. data = dict()
  40. data['u'] = u
  41. #data['settings'] = settings
  42. #data['static'] = static
  43. request.session['UserId'] = u.id
  44. print('utente validato:',u.nome)
  45. setLog(1,utente=u)
  46. #setNewLog(1,{'u':u.nome})
  47. ### comunicazioni ###
  48. if len(u.mail) > 0:
  49. comunicazione = None
  50. try:
  51. comunicazione = Comunicazione.objects.get(pk=2)
  52. except Comunicazione.DoesNotExist as dne:
  53. print('comunicazione non valida',dne)
  54. if comunicazione:
  55. sm = ServizioMail(debug=True)
  56. sm.set_mailfrom=comunicazione.mittente
  57. sm.add_to(u.mail)
  58. sm.set_soggetto(comunicazione.soggetto)
  59. sm.set_corpo(comunicazione.corpo)
  60. sm_data = dict()
  61. sm_data['utente'] = u
  62. sm.set_data(sm_data)
  63. sm.send()
  64. ### comunicazioni ###
  65. ### obbligo cambio password
  66. ### se è previsto che l'utente a livello di sede cambi la password
  67. ### al primo ingresso, qui vengono effettuati entrambi i check
  68. if u.sede.cambiopassword and u.primologin:
  69. print("l'utente deve cambiare obbligatoriamente la password")
  70. return HttpResponseRedirect(reverse("utente:download"))
  71. else: # l'utente ordinario non esiste
  72. print('verifica amministratore')
  73. a = None
  74. try:
  75. print(dir(Amministratore))
  76. a = Amministratore.objects.get(login=accesso.strip())
  77. if a:
  78. print('login trovato',a)
  79. except Amministratore.DoesNotExist as dne:
  80. print('amministratore non trovato',dne)
  81. a = None
  82. if a:
  83. request.session['AdminId'] = a.id
  84. setLog(1,amministratore=a)
  85. ### comunicazioni ###
  86. sm = ServizioMail(debug=True)
  87. comunicazione = None
  88. try:
  89. comunicazione = Comunicazione.objects.get(pk=1)
  90. except Comunicazione.DoesNotExist as dne:
  91. print("Record comunicazione inesistente",dne)
  92. if comunicazione:
  93. sm.set_mailfrom=comunicazione.mittente
  94. sm.add_to(a.mail)
  95. sm.set_soggetto(comunicazione.soggetto)
  96. sm.set_corpo(comunicazione.corpo)
  97. sm_data = dict()
  98. utente=dict() #adattamento campo utente
  99. utente['nome'] = a.nome
  100. utente['mail'] = a.mail
  101. sm_data['utente'] = a
  102. sm.set_data(sm_data)
  103. sm.send()
  104. ### comunicazioni ###
  105. return HttpResponseRedirect(reverse("azienda:welcome"))
  106. else:
  107. temp={}
  108. temp['cfisc'] = ''
  109. temp['passs'] = ''
  110. result = LoginUser(temp)
  111. data['login'] = result
  112. return render(request,'login.html',data)
  113. def RichiestaAggiornamentoPassword(request):
  114. '''
  115. la form che segue, serve per aggiornare la propria password/pin
  116. '''
  117. request.session.flush()
  118. request.session.set_expiry(3600)
  119. data = dict()
  120. data['HeaderTitle'] = getConfig('HeaderTitle')
  121. uuidres = str(uuid.uuid4())
  122. print('uuid',uuidres)
  123. if request.method == 'POST':
  124. informazione = PasswordUpdate(request.POST)
  125. if informazione.is_valid():
  126. # invio mail di comunicazione
  127. # con pin annesso.
  128. informazione = informazione.cleaned_data.get('informazione')
  129. print('informazione',informazione)
  130. a = None
  131. d = None
  132. # 1 tentativo su codice fiscale
  133. try:
  134. a = Utente.objects.get(codicefiscale=informazione.upper())
  135. d = 'u'
  136. except Utente.DoesNotExist as dne:
  137. print('informazione non trovata tra i codici fiscali utente')
  138. try:
  139. a = Utente.objects.get(mail=informazione.lower())
  140. d = 'u'
  141. except Utente.DoesNotExist as dne:
  142. print('informazione non trovata tra le email')
  143. try:
  144. a = Amministratore.objects.get(login=informazione.lower())
  145. except Amministratore.DoesNotExist as dne:
  146. print('informazione non trovata tra i login amministratotore')
  147. if a:
  148. print('informazione',a,d)
  149. ### comunicazioni ###
  150. sm = ServizioMail(debug=True)
  151. comunicazione = None
  152. try:
  153. comunicazione = Comunicazione.objects.get(pk=4)
  154. except Comunicazione.DoesNotExist as dne:
  155. print("Record comunicazione inesistente",dne)
  156. if comunicazione:
  157. sm.set_mailfrom=comunicazione.mittente
  158. sm.add_to(a.mail)
  159. sm.set_soggetto(comunicazione.soggetto)
  160. sm.set_corpo(comunicazione.corpo)
  161. sm_data = dict()
  162. utente=dict() #adattamento campo utente
  163. print(reverse('login:ResetPassword',args=[uuidres]))
  164. utente['link'] = reverse('utente:updatePasswordFromLogin',args=[uuidres])
  165. utente['nome'] = a.nome
  166. utente['mail'] = a.mail
  167. utente['sito'] = getConfig('DefaultSite')
  168. utente['titolo'] = getConfig('HeaderTitle')
  169. sm_data['utente'] = utente
  170. sm.set_data(sm_data)
  171. sm.send()
  172. ### comunicazioni ###
  173. return render(request,'updatePasswordEnd.html',{})
  174. else:
  175. data['informazione'] = PasswordUpdate(request.POST)
  176. else:
  177. data['informazione'] = PasswordUpdate({'informazione':''})
  178. return render(request,'updatePassword.html',data)
  179. def ResetPassword(request,uuid=None):
  180. print('uuid',uuid)
  181. return HttpResponseRedirect(reverse("login:start"))