views.py 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511
  1. from django.shortcuts import render
  2. from django.http import HttpResponseRedirect
  3. from django.urls import reverse
  4. from .models import *
  5. from config.views import *
  6. from config.datafunc import *
  7. from att.views import *
  8. from .forms import *
  9. from sicurezza.views import *
  10. def welcome(request):
  11. if not 'AdminId' in request.session:
  12. return HttpResponseRedirect(reverse("login:start"))
  13. d = DataDict()
  14. data = d.getData()
  15. define = Define(request)
  16. data['admin'] = define.getAdmin()
  17. data['azienda'] = define.getAzienda()
  18. data['sede'] = define.getSede()
  19. print("cazzo cazzo",data['azienda'])
  20. ### permessi inizio ###
  21. data['permesso'] = getAMP(data['admin'])[0]
  22. if 'AziendaId' in data:
  23. for t in getAZP(data['AziendaId'],admin):
  24. if t not in data['permesso']:
  25. data['permesso'].append(t)
  26. for t in getSEP(data['sede'],admin):
  27. if t not in data['permesso']:
  28. data['permesso'].append(t)
  29. #print('permesso',getAMP(admin)[0])
  30. #print('permesso_azienda',getAZP(data['AziendaId'],admin))
  31. #print('permesso_sede',getSEP(data['sede'],admin))
  32. ### permessi fine ###
  33. ### ricerca delle aziende valide per questo amministratore
  34. assegnazioneazienda = listaAZP(data['admin'])[0]
  35. print('assegnazioneazienda',len(assegnazioneazienda))
  36. if len(assegnazioneazienda) == 1:
  37. ### c'e' una sola azienda,
  38. print(type(assegnazioneazienda[0]))
  39. azienda = Azienda.objects.get(pk=assegnazioneazienda[0].id)
  40. data['azienda'] = azienda
  41. request.session['AziendaId'] = azienda.id
  42. print("Singola Azienda",azienda.nome)
  43. ### lista delle sedi valida per questo amministratore
  44. assegnazionesede=None
  45. if data['azienda']:
  46. assegnazionesede = listaSEP(data['admin'],data['azienda'],"SEDE")
  47. print("assegnazionesede",len(assegnazionesede))
  48. ### lista attività ###
  49. data['listaAttivitaxAmministrazione']=getLogxAmministrazione(data['admin'])
  50. if request.method=="POST":
  51. print(request.POST)
  52. if 'indietro' in request.POST:
  53. print('premuto tast indietro,logout')
  54. return HttpResponseRedirect(reverse("login:start"))
  55. if "sceltaazienda" in request.POST:
  56. sceltaazienda = request.POST.get('sceltaazienda')
  57. try:
  58. sceltaazienda = int(sceltaazienda)
  59. except ValueError as ve:
  60. print("Non e' stata fatta la scelta corretta",ve)
  61. return HttpResponseRedirect(reverse('azienda:welcome'))
  62. print("sceltaazienda = ",request.POST.get('sceltaazienda'))
  63. # attività su nuova/edit azienda
  64. if sceltaazienda == -1: #richiesta una nuova azienda
  65. print('sceltaazienda -1:',sceltaazienda)
  66. if "AziendaId" in request.session:
  67. del request.session['AziendaId']
  68. if "azienda" in request.session:
  69. del request.session['azienda']
  70. if "SedeId" in request.session:
  71. del request.session['SedeId']
  72. if "sede" in request.session:
  73. del request.session['sede']
  74. return HttpResponseRedirect(reverse('azienda:welcome'))
  75. elif sceltaazienda == 0:
  76. print('sceltaazienda 0:',sceltaazienda)
  77. request.session['AziendaIdEdit'] = 0
  78. print('AziendaId',request.session['AziendaIdEdit'])
  79. return HttpResponseRedirect(reverse('azienda:editAzienda'))
  80. else:
  81. try:
  82. azienda = Azienda.objects.get(pk=sceltaazienda)
  83. data['azienda'] = azienda
  84. request.session['AziendaId'] = azienda.id
  85. request.session['SedeId'] = -1
  86. if 'sede' in data:
  87. del data['sede']
  88. except Azienda.DoesNotExist as dne:
  89. print("errore, oggetto inesistente",dne)
  90. if "sceltasede" in request.POST:
  91. sceltasede = request.POST.get('sceltasede')
  92. try:
  93. sceltasede = int(sceltasede)
  94. request.session['SedeId'] = sceltasede
  95. except ValueError as ve:
  96. print("Non e' stata fatta la scelta corretta",ve)
  97. return HttpResponseRedirect(reverse('azienda:welcome'))
  98. print("sceltasede = ",request.POST.get('sceltasede'))
  99. if sceltasede == -1:
  100. print('sceltasede -1:',sceltasede)
  101. if 'sede' in data:
  102. del data['sede']
  103. elif sceltasede == 0: #richiesta una nuova azienda
  104. print('sceltasede 0:',sceltasede)
  105. request.session['SedeIdEdit'] = 0
  106. return HttpResponseRedirect(reverse('azienda:editSede'))
  107. else:
  108. try:
  109. sede = Sede.objects.get(pk=sceltasede)
  110. data['sede'] = sede
  111. request.session['SedeId'] = sede.id
  112. except Sede.DoesNotExist as dne:
  113. print("errore,oggetto inesistente",dne)
  114. if "utenti" in request.POST:
  115. print('premuto tasto utenti')
  116. return HttpResponseRedirect(reverse('utente:welcome'))
  117. if 'documenti' in request.POST:
  118. # stato premuto il tasto documenti
  119. print('premuto tasto documenti')
  120. return HttpResponseRedirect(reverse('documento:welcome'))
  121. if "attivita" in request.POST:
  122. print('premuto tasto attivita')
  123. print("azioenda:",azienda)
  124. data['listaAttivitaxAzienda']=getLogxAzienda(azienda)
  125. if 'comunicazioni' in request.POST:
  126. print('premuto tasto comunicazioni')
  127. return HttpResponseRedirect(reverse('comunicazione:welcome'))
  128. if 'parazienda' in request.POST:
  129. print('premuto tasto Par.Azienda')
  130. azid = request.POST.get('parazienda')
  131. print('azienda passata',request.POST.get('parazienda'))
  132. azienda = Azienda.objects.get(pk=azid)
  133. request.session['AziendaId'] = azienda.id
  134. request.session['AziendaIdEdit'] = azienda.id
  135. return HttpResponseRedirect(reverse('azienda:editAzienda'))
  136. if 'parsede' in request.POST:
  137. print('premuto tasto Par.Sede')
  138. seid = request.POST.get('parsede')
  139. print('sede passata',request.POST.get('parsede'))
  140. sede = Sede.objects.get(pk=seid)
  141. request.session['SedeId'] = sede.id
  142. request.session['SedeIdEdit'] = sede.id
  143. return HttpResponseRedirect(reverse('azienda:editSede'))
  144. if 'amministratore' in request.POST:
  145. print(' premuto tasto Amministratore')
  146. return HttpResponseRedirect(reverse('amministratore:welcome'))
  147. data['AziendaLista'] = assegnazioneazienda
  148. if 'azienda' in data and data['azienda'] != None:
  149. print('azienda',data['azienda'])
  150. print('azienda selezionata:',data['azienda'].nome)
  151. # costruisce la lista delle sedi.
  152. data['SedeLista'] = listaSEP(data['azienda'],data['admin'],"SEDE")[0]
  153. print('numero aziende',len(data['AziendaLista']))
  154. if 'SedeLista' in data:
  155. print('numero di sedi',len(data['SedeLista']))
  156. #for i in data['SedeLista']: print(":::",i.nome)
  157. return render(request,'azienda.welcome.html',data)
  158. # creazione azienda
  159. def editAzienda(request):
  160. if not 'AdminId' in request.session:
  161. return HttpResponseRedirect(reverse("login:start"))
  162. data=dict()
  163. data['HeaderTitle'] = getConfig('HeaderTitle')
  164. data['Navbar']=False
  165. AdminId = request.session['AdminId']
  166. print('AdminId',AdminId)
  167. admin = Amministratore.objects.get(pk=AdminId)
  168. data['admin'] = admin
  169. print('admin',admin.id,admin.nome)
  170. azienda = None
  171. if 'AziendaId' in request.session:
  172. AziendaId = request.session['AziendaId']
  173. print('AziendaId',AziendaId)
  174. azienda = Azienda.objects.get(pk=AziendaId)
  175. data['azienda'] = azienda
  176. sede = None
  177. if 'SedeId' in request.session:
  178. SedeId = request.session['SedeId']
  179. print('SedeId',SedeId)
  180. try:
  181. sede = Sede.objects.get(pk=SedeId)
  182. except Sede.DoesNotExist as dne:
  183. print("Sede non esiste")
  184. data['sede'] = sede
  185. ### azienda su cui effettuare le operazioni
  186. azienda = None
  187. if 'AziendaIdEdit' in request.session:
  188. print('trovato riferimento AziendaIdEdit',request.session.get('AziendaIdEdit'))
  189. azid = request.session.get('AziendaIdEdit')
  190. try:
  191. azienda = Azienda.objects.get(pk=azid)
  192. print('azienda trovata',azienda.nome)
  193. except Azienda.DoesNotExist as dnf:
  194. print(dnf)
  195. azienda = Azienda()
  196. #### permessi ####
  197. data['permesso'] = getAMP(admin)[0]
  198. for t in getAZP(azienda,admin):
  199. if t not in data['permesso']:
  200. data['permesso'].append(t)
  201. if 'sede' in data:
  202. for t in getSEP(data['sede'],admin):
  203. if t not in data['permesso']:
  204. data['permesso'].append(t)
  205. print('permessi:',data['permesso'])
  206. #### permessi ####
  207. if request.method == 'POST':
  208. print('un tasto è stato premuto')
  209. if 'indietro' in request.POST:
  210. return HttpResponseRedirect(reverse('azienda:welcome'))
  211. if 'AggiornaAziendaButton' in request.POST:
  212. print('premuto tasto "AggiornaAziendaButton"')
  213. nuovaazienda = formAzienda(request.POST)
  214. if nuovaazienda.is_valid():
  215. print("il form AggiornaAziendaButton' valido",request.POST)
  216. azienda.nome = nuovaazienda.cleaned_data.get('nome')
  217. azienda.mail = nuovaazienda.cleaned_data.get('mail')
  218. azienda.partitaiva = nuovaazienda.cleaned_data.get('partitaiva')
  219. azienda.cambiopassword = nuovaazienda.cleaned_data.get('cambiopassword')
  220. azienda.forzanuovapassword = nuovaazienda.cleaned_data.get('forzanuovapassword')
  221. azienda.otppassword = nuovaazienda.cleaned_data.get('otppassword')
  222. azienda.save()
  223. request.session['AziendaIdEdit'] = azienda.id
  224. print('azienda:',azienda.id)
  225. request.session['AziendaId'] = azienda.id
  226. data['azienda'] = azienda
  227. ### nel caso l'azienda non esista, si aggiungono i permessi di base
  228. print("data['admin']",data['admin'])
  229. if 'AZIENDA' in getAMP(data['admin'])[0]:
  230. print('getAMP: Azienda')
  231. setAZP(azienda,data['admin'],"AZIENDA")
  232. if 'AZIENDA.CREA' in getAMP(data['admin'])[0]:
  233. print('getAMP: AZIENDA.CREA')
  234. setAZP(azienda,data['admin'],"AZIENDA.CREA")
  235. if 'AZIENDA.EDIT' in getAMP(data['admin'])[0]:
  236. print('getAMP: AZIENDA.EDIT')
  237. setAZP(azienda,data['admin'],"AZIENDA.EDIT")
  238. if 'UTENTE' in getAMP(data['admin'])[0]:
  239. print('getAMP: UTENTE')
  240. setAZP(azienda,data['admin'],"UTENTE")
  241. if 'UTENTE.CREA' in getAMP(data['admin'])[0]:
  242. print('getAMP: UTENTE.CREA')
  243. setAZP(azienda,data['admin'],"UTENTE.CREA")
  244. if 'UTENTE.EDIT' in getAMP(data['admin'])[0]:
  245. print('getAMP: UTENTE.EDIT')
  246. setAZP(azienda,data['admin'],"UTENTE.EDIT")
  247. else:
  248. data['aziendaForm'] = formAzienda(request.POST)
  249. print("il form 'AggiornaAziendaButton' non è valido")
  250. if 'CancellaAziendaPermessiButton' in request.POST:
  251. print('premuto "CancellaAziendaPermessiButton"')
  252. cancellaaziendaamministratoripermessi = request.POST.get('CancellaAziendaPermessiButton')
  253. print('CancellaAziendaAmministratoriPermessi',cancellaaziendaamministratoripermessi)
  254. azp = AZP.objects.get(pk=cancellaaziendaamministratoripermessi)
  255. if azp:
  256. print('Permesso Azienda Amministratore trovato - cancello')
  257. azp.delete()
  258. if 'PermessoDaAggiungereButton' in request.POST:
  259. print('premuto "PermessoDaAggiungereButton"')
  260. formaziendapermessi = formAziendaPermessi(request.POST,amministratori=Amministratore.objects.all())
  261. #formaziendapermessi.c(Amministratore.objects.all()) # alternativa: lista dei soli amministratori con autorizzazione AZIENDA in AMM
  262. #print(formaziendapermessi)
  263. if formaziendapermessi.is_valid():
  264. print('formAziendaPermessi valida')
  265. amministratori = formaziendapermessi.cleaned_data.get('ListaAmministratoriPermessi')
  266. print('amministratori da aggiungere',amministratori)
  267. for x in amministratori:
  268. print('am',amministratori,'az',azienda.nome)
  269. try:
  270. setAZP(azienda,str(x),"AZIENDA")
  271. except ValueError as ve:
  272. print('errore in SETAZP')
  273. else:
  274. print('formAziendaPermessi Errore')
  275. print(formaziendapermessi)
  276. formaziendafield = None
  277. if azienda:
  278. print('Abbiamo azienda',azienda.nome)
  279. tmp = dict()
  280. tmp['id'] = azienda.id
  281. tmp['nome'] = azienda.nome
  282. tmp['partitaiva'] = azienda.partitaiva
  283. tmp['mail'] = azienda.mail
  284. tmp['forzanuovapassword'] = azienda.forzanuovapassword
  285. tmp['cambiopassword'] = azienda.cambiopassword
  286. tmp['otppassword'] = azienda.otppassword
  287. formaziendafield = formAzienda(tmp)
  288. else:
  289. tmp = dict()
  290. tmp['nome'] = ''
  291. tmp['partitaiva'] = ''
  292. tmp['mail'] = user.mail
  293. tmp['forzanuovapassword'] = False
  294. tmp['cambiopassword' ] = False
  295. tmp['otppassword'] = False
  296. formaziendafield = formAzienda(tmp)
  297. data['aziendaForm'] = formaziendafield
  298. data['listaAmministratore'] = listaAMMperAzienda(AziendaId)[1]
  299. print(data['listaAmministratore'])
  300. data['listaAmministratoreDaAggiungere'] = Amministratore.objects.all()
  301. return render(request,'azienda.editAzienda.html',data)
  302. def editSede(request):
  303. if not 'AdminId' in request.session:
  304. return HttpResponseRedirect(reverse("login:start"))
  305. data=dict()
  306. data['HeaderTitle'] = getConfig('HeaderTitle')
  307. data['Navbar']=False
  308. AdminId = request.session['AdminId']
  309. print('AdminId',AdminId)
  310. admin = Amministratore.objects.get(pk=AdminId)
  311. data['admin'] = admin
  312. print('admin',admin.id,admin.nome)
  313. azienda = None
  314. if 'AziendaId' in request.session:
  315. AziendaId = request.session['AziendaId']
  316. print('AziendaId',AziendaId)
  317. azienda = Azienda.objects.get(pk=AziendaId)
  318. data['azienda'] = azienda
  319. sede = None
  320. if 'SedeId' in request.session:
  321. SedeId = request.session['SedeId']
  322. print('SedeId',SedeId)
  323. try:
  324. sede = Sede.objects.get(pk=SedeId)
  325. except Sede.DoesNotExist as dne:
  326. print("Sede non esiste")
  327. data['sede'] = sede
  328. sede = None
  329. if 'SedeIdEdit' in request.session:
  330. print('trovato riferimento SedeIdEdit',request.session.get('SedeIdEdit'))
  331. seid = request.session.get('SedeIdEdit')
  332. try:
  333. sede = Sede.objects.get(pk=seid)
  334. print('sede trovata',sede.nome)
  335. flag = True
  336. except Sede.DoesNotExist as dne:
  337. print('Sede indicata inesistente',dne)
  338. sede = Sede()
  339. sede.azienda = Azienda.objects.get(pk=AziendaId)
  340. print('sede.azienda',sede.azienda.nome)
  341. sede.cambiopassword = sede.azienda.cambiopassword
  342. sede.forzanuovapassword = sede.azienda.forzanuovapassword
  343. sede.otppassword = sede.azienda.otppassword
  344. #### permessi ####
  345. data['permesso'] = getAMP(admin)[0]
  346. for t in getAZP(azienda,admin):
  347. if t not in data['permesso']:
  348. data['permesso'].append(t)
  349. for t in getSEP(data['sede'],admin):
  350. if t not in data['permesso']:
  351. data['permesso'].append(t)
  352. print('permessi:',data['permesso'])
  353. #### permessi ####
  354. if request.method == "POST":
  355. print('un tasto è stato premuto')
  356. if 'indietro' in request.POST:
  357. return HttpResponseRedirect(reverse('azienda:welcome'))
  358. if 'AggiornaSedeButton' in request.POST:
  359. print('premuto tasto "AggiornaSedeButton"')
  360. nuovasede = formSede(request.POST)
  361. if nuovasede.is_valid():
  362. print('il form "formSede" è valido')
  363. sede.nome = nuovasede.cleaned_data.get('nome')
  364. sede.mail = nuovasede.cleaned_data.get('mail')
  365. sede.cambiopassword = nuovasede.cleaned_data.get('cambiopassword')
  366. sede.forzanuovapassword = nuovasede.cleaned_data.get('forzanuovapassword')
  367. sede.otppassword = nuovasede.cleaned_data.get('otppassword')
  368. sede.info = nuovasede.cleaned_data.get('info')
  369. sede.identificativo = nuovasede.cleaned_data.get('identificativo')
  370. sede.save()
  371. request.session['SedeIdEdit'] = sede.id
  372. print('sede:',sede.id)
  373. print('azienda',sede.nome)
  374. request.session['SedeId'] = sede.id
  375. data['sede'] = sede
  376. # nel caso la sede non esista, vediamo di crearla
  377. print("data['admin']",data['admin'])
  378. if 'SEDE' in getAMP(data['admin'])[0]:
  379. print('getAMP: SEDE')
  380. setSEP(sede,data['admin'],"SEDE")
  381. if 'SEDE.CREA' in getAMP(data['admin'])[0]:
  382. print('getAMP: SEDE.CREA')
  383. setSEP(sede,data['admin'],"SEDE.CREA")
  384. if 'SEDE.EDIT' in getAMP(data['admin'])[0]:
  385. print('getAMP: SEDE.EDIT')
  386. setSEP(sede,data['admin'],"SEDE.EDIT")
  387. if 'UTENTE' in getAMP(data['admin'])[0]:
  388. print('getAMP: UTENTE')
  389. setSEP(sede,data['admin'],"UTENTE")
  390. if 'UTENTE.CREA' in getAMP(data['admin'])[0]:
  391. print('getAMP: UTENTE.CREA')
  392. setSEP(sede,data['admin'],"UTENTE.CREA")
  393. if 'UTENTE.EDIT' in getAMP(data['admin'])[0]:
  394. print('getAMP: UTENTE.EDIT')
  395. setSEP(sede,data['admin'],"UTENTE.EDIT")
  396. else:
  397. data['sedeForm'] = formSede(request.POST)
  398. if 'CancellaSedePermessiButton' in request.POST:
  399. print('premuto "CancellaSedePermessiButton"')
  400. cancellasedeamministratoripermessi = request.POST.get('CancellaSedePermessiButton')
  401. print('CancellaSedeAmministratoriPermessi',cancellasedeamministratoripermessi)
  402. sep = SEP.objects.get(pk=cancellasedeamministratoripermessi)
  403. if sep:
  404. print('Permesso Sede Amministratore trovato - cancello')
  405. sep.delete()
  406. if 'PermessoDaAggiungereButton' in request.POST:
  407. print('premuto "PermessoDaAggiungereButton"')
  408. formsedepermessi = formSedePermessi(request.POST,amministratori=Amministratore.objects.all())
  409. #formaziendapermessi.c(Amministratore.objects.all()) # alternativa: lista dei soli amministratori con autorizzazione AZIENDA in AMM
  410. #print(formaziendapermessi)
  411. if formsedepermessi.is_valid():
  412. print('formSedePermessi valida')
  413. amministratori = formsedepermessi.cleaned_data.get('ListaAmministratoriPermessi')
  414. for i in amministratori:
  415. print('amministratori da aggiungere',i)
  416. setSEP(sede,str(i),"SEDE")
  417. else:
  418. print('formSedePermessi Errore')
  419. print(formsedepermessi)
  420. formsedefield = None
  421. if sede:
  422. print('Abbiamo sede',sede.nome)
  423. tmp = dict()
  424. tmp['nome'] = sede.nome
  425. tmp['info'] = sede.info
  426. tmp['identificativo'] = sede.identificativo
  427. tmp['cambiopassword'] = sede.cambiopassword
  428. tmp['forzanuovapassword'] = sede.forzanuovapassword
  429. tmp['otppassword'] = sede.otppassword
  430. print('stato tmp',tmp)
  431. formsedefield = formSede(tmp)
  432. data['sedeForm'] = formsedefield
  433. print("**** sedeId",SedeId)
  434. data['listaAmministratore'] = listaAMMperSede(SedeId)[1]
  435. print("lamm",data['listaAmministratore'])
  436. data['listaAmministratoreDaAggiungere'] = Amministratore.objects.all()
  437. return render(request,'azienda.editSede.html',data)