views.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. from django.shortcuts import render
  2. from django.http import HttpResponseRedirect
  3. from django.urls import reverse
  4. import django.db.utils
  5. from .models import *
  6. from .forms import *
  7. from supporto import managepassword
  8. from sicurezza.views import *
  9. from logger.views import *
  10. from comunicazioni.views import *
  11. from datetime import date
  12. from configurazione.views import *
  13. import json
  14. from mqtt import views as m
  15. from mqtt.views import mqtt # nuovo sistema mqtt che va a sostiture 'm'
  16. # Create your views here.
  17. def listeList(request):
  18. '''
  19. listing delle liste
  20. '''
  21. session = getSessionParms(request)
  22. userauth = session['_userauth_']
  23. liste2edit = session['_liste2edit_']
  24. domain2edit = session['_domain2edit_']
  25. request.session['_from_']="Liste:ListeList"
  26. try:
  27. utenteautorizzato = User.objects.get(pk=userauth)
  28. except User.DoesNotExist as dne:
  29. return HttpResponseRedirect(reverse('Login:login',args={}))
  30. if not domain2edit:
  31. domain2edit = utenteautorizzato.domain.id
  32. dominio = Domini.objects.get(pk=domain2edit)
  33. listelist = Liste.objects.filter(dominio=domain2edit).order_by('nome')
  34. value={}
  35. value['utenteautorizzato'] = utenteautorizzato
  36. value['user'] = None
  37. value['listelist'] = listelist
  38. value['dominio'] = dominio
  39. value['navbar'] = True
  40. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  41. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  42. securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
  43. value['securityrow'] = securityrow
  44. value['securityrowLen'] = len(securityrow)
  45. if request.method=="POST":
  46. if "Nuova Lista" in request.POST:
  47. print('nuova lista')
  48. request.session['_liste2edit_'] = 0
  49. return HttpResponseRedirect(reverse('Liste:ListeEdit',args={}))
  50. if "edit" in request.POST:
  51. print('id da editare',request.POST['edit'])
  52. request.session['_listeaccount2edit_'] = request.POST['edit']
  53. return HttpResponseRedirect(reverse('Liste:ListeAccount',args={}))
  54. if "disable" in request.POST:
  55. print('id da disattivare',request.POST['disable'])
  56. idpost = request.POST['disable']
  57. u = Liste.objects.get(pk=idpost)
  58. print('id',u.mail.nome)
  59. u.enabled = False
  60. #t = date.today()
  61. #u.account_date_disabled=t.strftime("%Y-%m-%d")
  62. u.save()
  63. if "enable" in request.POST:
  64. print('id da attivare',request.POST['enable'])
  65. idpost = request.POST['enable']
  66. u = Liste.objects.get(pk=idpost)
  67. print(f'lista: {u.nome}')
  68. u.enabled=True
  69. #u.account_date_disabled=None
  70. u.save()
  71. else:
  72. print('post non validato',request.POST)
  73. return render(request,"ListeList.html",value)
  74. def listeEdit(request):
  75. '''
  76. edit e add di una nuova lista
  77. '''
  78. session = getSessionParms(request)
  79. userauth = session['_userauth_']
  80. liste2edit = session['_liste2edit_']
  81. #listeaccount2edit = session['_listeaccount2edit_']
  82. domain2edit = session['_domain2edit_']
  83. request.session['_from_']="Liste:ListeListAccount"
  84. try:
  85. utenteautorizzato = User.objects.get(pk=userauth)
  86. except User.DoesNotExist as dne:
  87. return HttpResponseRedirect(reverse('Login:login',args={}))
  88. if not domain2edit:
  89. domain2edit = utenteautorizzato.domain.id
  90. dominio = Domini.objects.get(pk=domain2edit)
  91. dominioutenti = User.objects.filter(domain=dominio.id).filter(enabled=1)
  92. if not liste2edit or liste2edit==0:
  93. liste = Liste()
  94. else:
  95. liste = Liste.objects.get(pk=liste2edit)
  96. value={}
  97. value['utenteautorizzato'] = utenteautorizzato
  98. value['user'] = None
  99. value['listelist'] = liste.nome
  100. #value['listelistaccount'] = listelistAccount
  101. value['dominio'] = dominio
  102. value['dominioutenti'] = dominioutenti
  103. value['navbar'] = True
  104. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  105. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  106. securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
  107. securitylist = getSecurityList(securityrow)
  108. value['securityrow'] = securityrow
  109. value['securityrowLen'] = len(securityrow)
  110. value['securitylist'] = securitylist
  111. lal = ListAddListForm()
  112. value['lal'] = lal
  113. return render(request,"Listeedit.html",lal)
  114. def listeAccount(request):
  115. '''
  116. liste degli utenti per lista
  117. '''
  118. session = getSessionParms(request)
  119. userauth = session['_userauth_']
  120. liste2edit = session['_liste2edit_']
  121. listeaccount2edit = session['_listeaccount2edit_']
  122. domain2edit = session['_domain2edit_']
  123. request.session['_from_']="Liste:ListeListAccount"
  124. try:
  125. utenteautorizzato = User.objects.get(pk=userauth)
  126. except User.DoesNotExist as dne:
  127. return HttpResponseRedirect(reverse('Login:login',args={}))
  128. if not domain2edit:
  129. domain2edit = utenteautorizzato.domain.id
  130. dominio = Domini.objects.get(pk=domain2edit)
  131. dominioutenti = User.objects.filter(domain=dominio.id).filter(enabled=1)
  132. liste = Liste.objects.get(pk=listeaccount2edit)
  133. listelistAccount = ListeAccount.objects.filter(liste_id=listeaccount2edit).order_by('mail__mail')
  134. print(f'numero di record trovati: {len(listelistAccount)}')
  135. value={}
  136. value['utenteautorizzato'] = utenteautorizzato
  137. value['user'] = None
  138. value['listelist'] = liste.nome
  139. value['listelistaccount'] = listelistAccount
  140. value['dominio'] = dominio
  141. value['dominioutenti'] = dominioutenti
  142. value['navbar'] = True
  143. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  144. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  145. securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
  146. securitylist = getSecurityList(securityrow)
  147. value['securityrow'] = securityrow
  148. value['securityrowLen'] = len(securityrow)
  149. value['securitylist'] = securitylist
  150. # questo mqtt e' quello nuovo
  151. mq = mqtt()
  152. mq.build('topic','messaggio')
  153. mq.build('richiesta','MailingList')
  154. mq.build('stampa',True)
  155. tmp = dict()
  156. tmp['utenteautorizzato'] = "".join((utenteautorizzato.mail,'@',utenteautorizzato.domain.nome))
  157. mq.build('data',tmp)
  158. mq.pubblica()
  159. tmp=None
  160. # mqtt vecchio stampo
  161. c = m.start()
  162. m.publish(c,"Messaggio/Ml","Accesso alla mailing list di {}".format(utenteautorizzato.nome))
  163. if request.method=="POST":
  164. print(request.POST)
  165. if "delete" in request.POST:
  166. print('id da cancellaree',request.POST['delete'])
  167. idpost = request.POST['delete']
  168. u = ListeAccount.objects.get(pk=idpost)
  169. u.delete()
  170. #u.enainprogress=0
  171. #u.disinprogress=0
  172. #u.delinprogress=1
  173. #u.addinprogress=0
  174. #t = date.today()
  175. #u.save()
  176. q={}
  177. q['op']='unsub'
  178. if len(u.esterno):
  179. q['us'] = u.esterno
  180. else:
  181. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  182. q['us'] = q['us'].lower()
  183. q['do']=u.liste.dominio.nome
  184. q['ml']=u.liste.nome
  185. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  186. m.publish(c,"Richiesta/Ml",json.dumps(q))
  187. if "disable" in request.POST:
  188. print('id da disattivare',request.POST['disable'])
  189. idpost = request.POST['disable']
  190. print('ippost disable',idpost)
  191. u = ListeAccount.objects.get(pk=idpost)
  192. print(u.enabled)
  193. u.enabled = False
  194. #u.disinprogress=
  195. #.enainprogress=0
  196. #.delinprogress=0
  197. #u.addinprogress=0
  198. t = date.today()
  199. u.save()
  200. q={}
  201. q['op']='unsub'
  202. if len(u.esterno):
  203. q['us'] = u.esterno
  204. else:
  205. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  206. q['us'] = q['us'].lower()
  207. q['do']=u.liste.dominio.nome
  208. q['ml']=u.liste.nome
  209. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  210. m.publish(c,"Richiesta/Ml",json.dumps(q))
  211. if "enable" in request.POST:
  212. print('id da attivare',request.POST['enable'])
  213. idpost = request.POST['enable']
  214. print('idpost enable',idpost)
  215. u = ListeAccount.objects.get(pk=idpost)
  216. u.enabled=True
  217. #u.disinprogress=0
  218. #u.enainprogress=1
  219. #u.delinprogress=0
  220. #u.addinprogress=0
  221. u.save()
  222. q={}
  223. q['op']='sub'
  224. if len(u.esterno):
  225. q['us'] = u.esterno
  226. else:
  227. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  228. q['us']=q['us'].lower()
  229. q['do']=u.liste.dominio.nome
  230. q['ml']=u.liste.nome
  231. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  232. m.publish(c,"Richiesta/Ml",json.dumps(q))
  233. if 'verifica' in request.POST:
  234. # verifica che l'account sia effettivamente registrato nella mailing list.
  235. print('id da verificare',request.POST['verifica'])
  236. idpost = request.POST['verifica']
  237. u = ListeAccount.objects.get(pk=idpost)
  238. q=dict()
  239. q['op']='check'
  240. if len(u.esterno):
  241. q['us'] = u.esterno
  242. else:
  243. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  244. q['us']=q['us'].lower()
  245. q['do']=u.liste.dominio.nome
  246. q['ml']=u.liste.nome
  247. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  248. q['au']=q['au'].lower()
  249. m.publish(c,"Richiesta/Ml",json.dumps(q))
  250. if 'verificaTutti' in request.POST:
  251. print('verificaTutti')
  252. # verifica che l'account sia effettivamente registrato nella mailing list.
  253. q=dict()
  254. q['op']='checkAll'
  255. q['do']=liste.dominio.nome
  256. q['ml']=liste.nome
  257. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  258. q['au']=q['au'].lower()
  259. m.publish(c,"Richiesta/Ml",json.dumps(q))
  260. if 'Ritorno' in request.POST:
  261. return HttpResponseRedirect(reverse('Liste:ListeList',args={}))
  262. if 'Registra' in request.POST:
  263. # verificati i tasti, si passa all'inserimento del record.
  264. # abbiamo o la mail scelta dall'elenco, o la mail esterna.
  265. f = ListAddAccountForm(request.POST)
  266. f.update(dominio.id)
  267. if f.is_valid():
  268. u = ListeAccount()
  269. u.liste = liste
  270. u.mail_id = f.cleaned_data.get('mail_interne')
  271. u.esterno = f.cleaned_data.get('mail_esterne')
  272. u.enable=True
  273. #u.disinprogress=0
  274. #u.enainprogress=0
  275. #u.delinprogress=0
  276. #u.addinprogress=1
  277. try:
  278. if int(u.mail_id) > 0 or (len(u.esterno.split("@")) == 2):
  279. u.save()
  280. except django.db.utils.IntegrityError as ie:
  281. print(ie)
  282. q={}
  283. q['op']='sub'
  284. print("u.mail_id",u.mail_id)
  285. if int(u.mail_id) > 0:
  286. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  287. else:
  288. if len(u.esterno) > 0:
  289. splitmail = u.esterno.split('@')
  290. if len(splitmail) == 2:
  291. q['us'] = "".join((splitmail[0],"@",splitmail[1]))
  292. q['do']=u.liste.dominio.nome
  293. q['ml']=u.liste.nome
  294. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  295. if 'us' in q:
  296. m.publish(c,"Richiesta/Ml",json.dumps(q))
  297. else:
  298. print(f.errors)
  299. laaf = ListAddAccountForm()
  300. laaf.update(dominio.id)
  301. value['laaf'] = laaf
  302. print(type(laaf))
  303. value['listelistaccount'] = ListeAccount.objects.filter(liste_id=listeaccount2edit).order_by('id')
  304. return render(request,"ListeListAccount.html",value)