views.py 6.2 KB

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