2
0

views.py 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586
  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 "editAdmin" in request.POST:
  55. print('EditAdmin: id da editare',request.POST['editAdmin'])
  56. request.session['_listeaccount2edit_'] = request.POST['editAdmin']
  57. return HttpResponseRedirect(reverse('Liste:ListeAdmin',args={}))
  58. if "disable" in request.POST:
  59. print('id da disattivare',request.POST['disable'])
  60. idpost = request.POST['disable']
  61. u = Liste.objects.get(pk=idpost)
  62. print('id',u.mail.nome)
  63. u.enabled = False
  64. #t = date.today()
  65. #u.account_date_disabled=t.strftime("%Y-%m-%d")
  66. u.save()
  67. if "enable" in request.POST:
  68. print('id da attivare',request.POST['enable'])
  69. idpost = request.POST['enable']
  70. u = Liste.objects.get(pk=idpost)
  71. print(f'lista: {u.nome}')
  72. u.enabled=True
  73. #u.account_date_disabled=None
  74. u.save()
  75. else:
  76. print('post non validato',request.POST)
  77. return render(request,"ListeList.html",value)
  78. def listeEdit(request):
  79. '''
  80. edit e add di una nuova lista
  81. '''
  82. session = getSessionParms(request)
  83. userauth = session['_userauth_']
  84. liste2edit = session['_liste2edit_']
  85. #listeaccount2edit = session['_listeaccount2edit_']
  86. domain2edit = session['_domain2edit_']
  87. request.session['_from_']="Liste:ListeListAccount"
  88. try:
  89. utenteautorizzato = User.objects.get(pk=userauth)
  90. except User.DoesNotExist as dne:
  91. return HttpResponseRedirect(reverse('Login:login',args={}))
  92. if not domain2edit:
  93. domain2edit = utenteautorizzato.domain.id
  94. dominio = Domini.objects.get(pk=domain2edit)
  95. dominioutenti = User.objects.filter(domain=dominio.id).filter(enabled=1)
  96. if not liste2edit or liste2edit==0:
  97. liste = Liste()
  98. else:
  99. liste = Liste.objects.get(pk=liste2edit)
  100. value={}
  101. value['utenteautorizzato'] = utenteautorizzato
  102. value['user'] = None
  103. value['listelist'] = liste.nome
  104. #value['listelistaccount'] = listelistAccount
  105. value['dominio'] = dominio
  106. value['dominioutenti'] = dominioutenti
  107. value['navbar'] = True
  108. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  109. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  110. securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
  111. securitylist = getSecurityList(securityrow)
  112. value['securityrow'] = securityrow
  113. value['securityrowLen'] = len(securityrow)
  114. value['securitylist'] = securitylist
  115. lal = ListAddListForm()
  116. value['lal'] = lal
  117. return render(request,"Listeedit.html",lal)
  118. def listeAccount(request):
  119. '''
  120. liste degli utenti per lista
  121. '''
  122. session = getSessionParms(request)
  123. userauth = session['_userauth_']
  124. liste2edit = session['_liste2edit_']
  125. listeaccount2edit = session['_listeaccount2edit_']
  126. domain2edit = session['_domain2edit_']
  127. request.session['_from_']="Liste:ListeListAccount"
  128. try:
  129. utenteautorizzato = User.objects.get(pk=userauth)
  130. except User.DoesNotExist as dne:
  131. return HttpResponseRedirect(reverse('Login:login',args={}))
  132. if not domain2edit:
  133. domain2edit = utenteautorizzato.domain.id
  134. dominio = Domini.objects.get(pk=domain2edit)
  135. dominioutenti = User.objects.filter(domain=dominio.id).filter(enabled=1)
  136. liste = Liste.objects.get(pk=listeaccount2edit)
  137. listelistAccount = ListeAccount.objects.filter(liste_id=listeaccount2edit).order_by('mail__mail')
  138. print(f'numero di record trovati: {len(listelistAccount)}')
  139. value={}
  140. value['utenteautorizzato'] = utenteautorizzato
  141. value['user'] = None
  142. value['listelist'] = liste.nome
  143. value['listelistaccount'] = listelistAccount
  144. value['dominio'] = dominio
  145. value['dominioutenti'] = dominioutenti
  146. value['navbar'] = True
  147. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  148. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  149. securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
  150. securitylist = getSecurityList(securityrow)
  151. value['securityrow'] = securityrow
  152. value['securityrowLen'] = len(securityrow)
  153. value['securitylist'] = securitylist
  154. # questo mqtt e' quello nuovo
  155. mq = mqtt()
  156. mq.build('topic','messaggio')
  157. mq.build('richiesta','MailingList')
  158. mq.build('stampa',True)
  159. tmp = dict()
  160. tmp['utenteautorizzato'] = "".join((utenteautorizzato.mail,'@',utenteautorizzato.domain.nome))
  161. mq.build('data',tmp)
  162. mq.pubblica()
  163. tmp=None
  164. # mqtt vecchio stampo
  165. c = m.start()
  166. m.publish(c,"Messaggio/Ml","Accesso alla mailing list di {}".format(utenteautorizzato.nome))
  167. if request.method=="POST":
  168. print(request.POST)
  169. if "delete" in request.POST:
  170. print('id da cancellaree',request.POST['delete'])
  171. idpost = request.POST['delete']
  172. u = ListeAccount.objects.get(pk=idpost)
  173. u.delete()
  174. #u.enainprogress=0
  175. #u.disinprogress=0
  176. #u.delinprogress=1
  177. #u.addinprogress=0
  178. #t = date.today()
  179. #u.save()
  180. q={}
  181. q['op']='unsub'
  182. if len(u.esterno):
  183. q['us'] = u.esterno
  184. else:
  185. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  186. q['us'] = q['us'].lower()
  187. q['do']=u.liste.dominio.nome
  188. q['ml']=u.liste.nome
  189. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  190. m.publish(c,"Richiesta/Ml",json.dumps(q))
  191. if "disable" in request.POST:
  192. print('id da disattivare',request.POST['disable'])
  193. idpost = request.POST['disable']
  194. print('ippost disable',idpost)
  195. u = ListeAccount.objects.get(pk=idpost)
  196. print(u.enabled)
  197. u.enabled = False
  198. #u.disinprogress=
  199. #.enainprogress=0
  200. #.delinprogress=0
  201. #u.addinprogress=0
  202. t = date.today()
  203. u.save()
  204. q={}
  205. q['op']='unsub'
  206. if len(u.esterno):
  207. q['us'] = u.esterno
  208. else:
  209. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  210. q['us'] = q['us'].lower()
  211. q['do']=u.liste.dominio.nome
  212. q['ml']=u.liste.nome
  213. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  214. m.publish(c,"Richiesta/Ml",json.dumps(q))
  215. if "enable" in request.POST:
  216. print('id da attivare',request.POST['enable'])
  217. idpost = request.POST['enable']
  218. print('idpost enable',idpost)
  219. u = ListeAccount.objects.get(pk=idpost)
  220. u.enabled=True
  221. #u.disinprogress=0
  222. #u.enainprogress=1
  223. #u.delinprogress=0
  224. #u.addinprogress=0
  225. u.save()
  226. q={}
  227. q['op']='sub'
  228. if len(u.esterno):
  229. q['us'] = u.esterno
  230. else:
  231. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  232. q['us']=q['us'].lower()
  233. q['do']=u.liste.dominio.nome
  234. q['ml']=u.liste.nome
  235. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  236. m.publish(c,"Richiesta/Ml",json.dumps(q))
  237. if 'verifica' in request.POST:
  238. # verifica che l'account sia effettivamente registrato nella mailing list.
  239. print('id da verificare',request.POST['verifica'])
  240. idpost = request.POST['verifica']
  241. u = ListeAccount.objects.get(pk=idpost)
  242. q=dict()
  243. q['op']='check'
  244. if len(u.esterno):
  245. q['us'] = u.esterno
  246. else:
  247. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  248. q['us']=q['us'].lower()
  249. q['do']=u.liste.dominio.nome
  250. q['ml']=u.liste.nome
  251. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  252. q['au']=q['au'].lower()
  253. m.publish(c,"Richiesta/Ml",json.dumps(q))
  254. if 'verificaTutti' in request.POST:
  255. print('verificaTutti')
  256. # verifica che l'account sia effettivamente registrato nella mailing list.
  257. q=dict()
  258. q['op']='checkAll'
  259. q['do']=liste.dominio.nome
  260. q['ml']=liste.nome
  261. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  262. q['au']=q['au'].lower()
  263. m.publish(c,"Richiesta/Ml",json.dumps(q))
  264. if 'Ritorno' in request.POST:
  265. return HttpResponseRedirect(reverse('Liste:ListeList',args={}))
  266. if 'Registra' in request.POST:
  267. # verificati i tasti, si passa all'inserimento del record.
  268. # abbiamo o la mail scelta dall'elenco, o la mail esterna.
  269. f = ListAddAccountForm(request.POST)
  270. f.update(dominio.id)
  271. if f.is_valid():
  272. u = ListeAccount()
  273. u.liste = liste
  274. u.mail_id = f.cleaned_data.get('mail_interne')
  275. u.esterno = f.cleaned_data.get('mail_esterne')
  276. u.enable=True
  277. #u.disinprogress=0
  278. #u.enainprogress=0
  279. #u.delinprogress=0
  280. #u.addinprogress=1
  281. try:
  282. if int(u.mail_id) > 0 or (len(u.esterno.split("@")) == 2):
  283. u.save()
  284. except django.db.utils.IntegrityError as ie:
  285. print(ie)
  286. q={}
  287. q['op']='sub'
  288. print("u.mail_id",u.mail_id)
  289. if int(u.mail_id) > 0:
  290. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  291. else:
  292. if len(u.esterno) > 0:
  293. splitmail = u.esterno.split('@')
  294. if len(splitmail) == 2:
  295. q['us'] = "".join((splitmail[0],"@",splitmail[1]))
  296. q['do']=u.liste.dominio.nome
  297. q['ml']=u.liste.nome
  298. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  299. if 'us' in q:
  300. m.publish(c,"Richiesta/Ml",json.dumps(q))
  301. else:
  302. print(f.errors)
  303. laaf = ListAddAccountForm()
  304. laaf.update(dominio.id)
  305. value['laaf'] = laaf
  306. print(type(laaf))
  307. value['listelistaccount'] = ListeAccount.objects.filter(liste_id=listeaccount2edit).order_by('id')
  308. return render(request,"ListeListAccount.html",value)
  309. def listeAdmin(request):
  310. '''
  311. liste degli utenti per lista
  312. '''
  313. session = getSessionParms(request)
  314. userauth = session['_userauth_']
  315. liste2edit = session['_liste2edit_']
  316. listeaccount2edit = session['_listeaccount2edit_']
  317. domain2edit = session['_domain2edit_']
  318. request.session['_from_']="Liste:ListeListAccount"
  319. try:
  320. utenteautorizzato = User.objects.get(pk=userauth)
  321. except User.DoesNotExist as dne:
  322. return HttpResponseRedirect(reverse('Login:login',args={}))
  323. if not domain2edit:
  324. domain2edit = utenteautorizzato.domain.id
  325. dominio = Domini.objects.get(pk=domain2edit)
  326. dominioutenti = User.objects.filter(domain=dominio.id).filter(enabled=1)
  327. liste = Liste.objects.get(pk=listeaccount2edit)
  328. listelistAdmin = ListeAdmin.objects.filter(liste_id=listeaccount2edit).order_by('mail__mail')
  329. print(f'numero di record trovati: {len(listelistAdmin)}')
  330. value={}
  331. value['utenteautorizzato'] = utenteautorizzato
  332. value['user'] = None
  333. value['listelist'] = liste.nome
  334. value['listelistaadmin'] = listelistAdmin
  335. value['dominio'] = dominio
  336. value['dominioutenti'] = dominioutenti
  337. value['navbar'] = True
  338. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  339. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  340. securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
  341. securitylist = getSecurityList(securityrow)
  342. value['securityrow'] = securityrow
  343. value['securityrowLen'] = len(securityrow)
  344. value['securitylist'] = securitylist
  345. # questo mqtt e' quello nuovo
  346. mq = mqtt()
  347. mq.build('topic','messaggio')
  348. mq.build('richiesta','MailingList')
  349. mq.build('stampa',True)
  350. tmp = dict()
  351. tmp['utenteautorizzato'] = "".join((utenteautorizzato.mail,'@',utenteautorizzato.domain.nome))
  352. mq.build('data',tmp)
  353. mq.pubblica()
  354. tmp=None
  355. # mqtt vecchio stampo
  356. c = m.start()
  357. m.publish(c,"Messaggio/Ml","Accesso alla mailing list di {} - ADMIN area".format(utenteautorizzato.nome))
  358. if request.method=="POST":
  359. print(request.POST)
  360. if "delete" in request.POST:
  361. print('id da cancellaree',request.POST['delete'])
  362. idpost = request.POST['delete']
  363. u = ListeAadmin.objects.get(pk=idpost)
  364. u.delete()
  365. #u.enainprogress=0
  366. #u.disinprogress=0
  367. #u.delinprogress=1
  368. #u.addinprogress=0
  369. #t = date.today()
  370. #u.save()
  371. q={}
  372. q['op']='unsub'
  373. if len(u.esterno):
  374. q['us'] = u.esterno
  375. else:
  376. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  377. q['us'] = q['us'].lower()
  378. q['do']=u.liste.dominio.nome
  379. q['ml']=u.liste.nome
  380. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  381. m.publish(c,"Richiesta/Ml",json.dumps(q))
  382. if "disable" in request.POST:
  383. print('id da disattivare',request.POST['disable'])
  384. idpost = request.POST['disable']
  385. print('ippost disable',idpost)
  386. u = ListeAccount.objects.get(pk=idpost)
  387. print(u.enabled)
  388. u.enabled = False
  389. #u.disinprogress=
  390. #.enainprogress=0
  391. #.delinprogress=0
  392. #u.addinprogress=0
  393. t = date.today()
  394. u.save()
  395. q={}
  396. q['op']='unsub'
  397. if len(u.esterno):
  398. q['us'] = u.esterno
  399. else:
  400. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  401. q['us'] = q['us'].lower()
  402. q['do']=u.liste.dominio.nome
  403. q['ml']=u.liste.nome
  404. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  405. m.publish(c,"Richiesta/Ml",json.dumps(q))
  406. if "enable" in request.POST:
  407. print('id da attivare',request.POST['enable'])
  408. idpost = request.POST['enable']
  409. print('idpost enable',idpost)
  410. u = ListeAccount.objects.get(pk=idpost)
  411. u.enabled=True
  412. #u.disinprogress=0
  413. #u.enainprogress=1
  414. #u.delinprogress=0
  415. #u.addinprogress=0
  416. u.save()
  417. q={}
  418. q['op']='sub'
  419. if len(u.esterno):
  420. q['us'] = u.esterno
  421. else:
  422. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  423. q['us']=q['us'].lower()
  424. q['do']=u.liste.dominio.nome
  425. q['ml']=u.liste.nome
  426. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  427. m.publish(c,"Richiesta/Ml",json.dumps(q))
  428. if 'verifica' in request.POST:
  429. # verifica che l'account sia effettivamente registrato nella mailing list.
  430. print('id da verificare',request.POST['verifica'])
  431. idpost = request.POST['verifica']
  432. u = ListeAccount.objects.get(pk=idpost)
  433. q=dict()
  434. q['op']='check'
  435. if len(u.esterno):
  436. q['us'] = u.esterno
  437. else:
  438. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  439. q['us']=q['us'].lower()
  440. q['do']=u.liste.dominio.nome
  441. q['ml']=u.liste.nome
  442. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  443. q['au']=q['au'].lower()
  444. m.publish(c,"Richiesta/Ml",json.dumps(q))
  445. if 'verificaTutti' in request.POST:
  446. print('verificaTutti')
  447. # verifica che l'account sia effettivamente registrato nella mailing list.
  448. q=dict()
  449. q['op']='checkAll'
  450. q['do']=liste.dominio.nome
  451. q['ml']=liste.nome
  452. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  453. q['au']=q['au'].lower()
  454. m.publish(c,"Richiesta/Ml",json.dumps(q))
  455. if 'enable_admin' in request.POST:
  456. pass
  457. if 'disable_admin' in request.POST:
  458. pass
  459. if 'delete_admin' in request.POST:
  460. pass
  461. if 'verifica_admin' in request.POST:
  462. pass
  463. if 'verifica_admin_tutti' in request.POST:
  464. pass
  465. if 'Ritorno' in request.POST:
  466. return HttpResponseRedirect(reverse('Liste:ListeList',args={}))
  467. if 'RegistraAdmin' in request.POST:
  468. # verificati i tasti, si passa all'inserimento del record.
  469. # abbiamo o la mail scelta dall'elenco, o la mail esterna.
  470. f = ListAddAccountForm(request.POST)
  471. f.update(dominio.id)
  472. if f.is_valid():
  473. u = ListeAccountAdmin()
  474. u.liste = liste
  475. u.mail_id = f.cleaned_data.get('mail_interne')
  476. u.esterno = f.cleaned_data.get('mail_esterne')
  477. u.enable=True
  478. #u.disinprogress=0
  479. #u.enainprogress=0
  480. #u.delinprogress=0
  481. #u.addinprogress=1
  482. try:
  483. if int(u.mail_id) > 0 or (len(u.esterno.split("@")) == 2):
  484. u.save()
  485. except django.db.utils.IntegrityError as ie:
  486. print(ie)
  487. q={}
  488. q['op']='subAdmin'
  489. print("u.mail_id",u.mail_id)
  490. if int(u.mail_id) > 0:
  491. q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome))
  492. else:
  493. if len(u.esterno) > 0:
  494. splitmail = u.esterno.split('@')
  495. if len(splitmail) == 2:
  496. q['us'] = "".join((splitmail[0],"@",splitmail[1]))
  497. q['do']=u.liste.dominio.nome
  498. q['ml']=u.liste.nome
  499. q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome))
  500. if 'us' in q:
  501. m.publish(c,"Richiesta/Ml",json.dumps(q))
  502. else:
  503. print(f.errors)
  504. laaf = ListAddAccountForm()
  505. laaf.update(dominio.id)
  506. value['laaf'] = laaf
  507. print(type(laaf))
  508. value['listelistadmin'] = ListeAdmin.objects.filter(liste_id=listeaccount2edit).order_by('mail')
  509. return render(request,"ListeListAdmin.html",value)