views.py 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  1. from django.shortcuts import render
  2. from django.http import HttpResponseRedirect
  3. from django.db.utils import IntegrityError
  4. from django.db.models import Q
  5. from django.urls import reverse
  6. from .models import *
  7. from config.views import *
  8. from config.datafunc import *
  9. from att.views import *
  10. from .forms import *
  11. from sicurezza.views import *
  12. from random import randint
  13. # lista aziende
  14. def welcome(request):
  15. if not 'AdminId' in request.session:
  16. return HttpResponseRedirect(reverse("login:start"))
  17. d = DataDict()
  18. data = d.getData()
  19. define = Define(request)
  20. data['admin'] = define.getAdmin()
  21. data['azienda'] = define.getAzienda()
  22. data['AziendaId'] = define.getAziendaId()
  23. data['sede'] = define.getSede()
  24. data['SedeId'] = define.getSedeId()
  25. ### permessi inizio ###
  26. data['permesso'] = getAMP(data['admin'])[0]
  27. print("******",data['azienda'])
  28. if 'azienda' in data:
  29. print('**** azienda presente ****')
  30. for t in getAZP(data['azienda'],data['admin'])[0]:
  31. if t not in data['permesso']:
  32. data['permesso'].append(t)
  33. if 'sede' in data:
  34. print('**** sede presente ****')
  35. for t in getSEP(data['sede'],data['admin']):
  36. if t not in data['permesso']:
  37. data['permesso'].append(t)
  38. print("Permessi Disponibili",data['permesso'])
  39. ### ricerca delle aziende valide per questo amministratore
  40. assegnazioneazienda = listaAZP(data['admin'])[0]
  41. print('assegnazioneazienda',len(assegnazioneazienda))
  42. ### verifica numero di aziende selezionate
  43. if len(assegnazioneazienda) == 1:
  44. print(type(assegnazioneazienda[0]))
  45. azienda = Azienda.objects.get(pk=assegnazioneazienda[0].id)
  46. data['azienda'] = azienda
  47. request.session['AziendaId'] = azienda.id
  48. print("Singola Azienda",azienda.nome)
  49. ### lista delle sedi valida per questo amministratore
  50. assegnazionesede=None
  51. if 'azienda' in data and data['azienda']:
  52. print("Abbiamo l'azienda",data['azienda'].nome)
  53. assegnazionesede = listaSEP(amministratore=data['admin'],azienda=data['azienda'],permesso="SEDE")[0]
  54. ### verifica numero di sedi selezionate
  55. print("assegnazionesede",len(assegnazionesede))
  56. if len(assegnazionesede) == 1:
  57. print("assegnazionesede",assegnazionesede)
  58. #print(assegnazionesede[0])
  59. sede = Sede.objects.get(pk=assegnazionesede[0].id)
  60. print("Sede",sede)
  61. data['sede'] = sede
  62. data['SedeId'] = sede.id
  63. request.session['SedeId'] = sede.id
  64. print("Singola Sede",sede.nome)
  65. ### lista attività ###
  66. data['listaAttivitaxAmministrazione']=getLogxAmministrazione(data['admin'])
  67. if request.method=="POST":
  68. print(request.POST)
  69. if 'indietro' in request.POST:
  70. print('premuto tast indietro,logout')
  71. return HttpResponseRedirect(reverse("login:start"))
  72. if "sceltaazienda" in request.POST:
  73. sceltaazienda = request.POST.get('sceltaazienda')
  74. try:
  75. sceltaazienda = int(sceltaazienda)
  76. except ValueError as ve:
  77. print("Non e' stata fatta la scelta corretta",ve)
  78. return HttpResponseRedirect(reverse('azienda:welcome'))
  79. print("sceltaazienda = ",request.POST.get('sceltaazienda'))
  80. # attività su nuova/edit azienda
  81. if sceltaazienda == -1: #richiesta una nuova azienda
  82. print('sceltaazienda -1:',sceltaazienda)
  83. if "AziendaId" in request.session:
  84. del request.session['AziendaId']
  85. if "azienda" in request.session:
  86. del request.session['azienda']
  87. if "SedeId" in request.session:
  88. del request.session['SedeId']
  89. if "sede" in request.session:
  90. del request.session['sede']
  91. return HttpResponseRedirect(reverse('azienda:welcome'))
  92. elif sceltaazienda == 0:
  93. print('sceltaazienda 0:',sceltaazienda)
  94. request.session['AziendaIdEdit'] = 0
  95. print('AziendaId',request.session['AziendaIdEdit'])
  96. return HttpResponseRedirect(reverse('azienda:editAzienda'))
  97. else:
  98. try:
  99. azienda = Azienda.objects.get(pk=sceltaazienda)
  100. data['azienda'] = azienda
  101. request.session['AziendaId'] = azienda.id
  102. request.session['SedeId'] = -1
  103. if 'sede' in data:
  104. del data['sede']
  105. except Azienda.DoesNotExist as dne:
  106. print("errore, oggetto inesistente",dne)
  107. if "sceltasede" in request.POST:
  108. sceltasede = request.POST.get('sceltasede')
  109. try:
  110. sceltasede = int(sceltasede)
  111. request.session['SedeId'] = sceltasede
  112. except ValueError as ve:
  113. print("Non e' stata fatta la scelta corretta",ve)
  114. return HttpResponseRedirect(reverse('azienda:welcome'))
  115. print("sceltasede = ",request.POST.get('sceltasede'))
  116. if sceltasede == -1:
  117. print('sceltasede -1:',sceltasede)
  118. if 'sede' in data:
  119. del data['sede']
  120. elif sceltasede == 0: #richiesta una nuova azienda
  121. print('sceltasede 0:',sceltasede)
  122. request.session['SedeIdEdit'] = 0
  123. return HttpResponseRedirect(reverse('azienda:editSede'))
  124. else:
  125. try:
  126. sede = Sede.objects.get(pk=sceltasede)
  127. data['sede'] = sede
  128. request.session['SedeId'] = sede.id
  129. except Sede.DoesNotExist as dne:
  130. print("errore,oggetto inesistente",dne)
  131. if "utenti" in request.POST:
  132. print('premuto tasto utenti')
  133. return HttpResponseRedirect(reverse('utente:welcome'))
  134. if 'documenti' in request.POST:
  135. # stato premuto il tasto documenti
  136. print('premuto tasto documenti')
  137. return HttpResponseRedirect(reverse('documento:welcome'))
  138. if "attivita" in request.POST:
  139. print('premuto tasto attivita')
  140. print("azienda:",data['azienda'])
  141. data['listaAttivitaxAzienda']=getLogxAzienda(data['azienda'])
  142. if 'comunicazioni' in request.POST:
  143. print('premuto tasto comunicazioni')
  144. return HttpResponseRedirect(reverse('comunicazione:welcome'))
  145. if 'parazienda' in request.POST:
  146. print('premuto tasto Par.Azienda')
  147. azid = request.POST.get('parazienda')
  148. print('azienda passata',request.POST.get('parazienda'))
  149. azienda = Azienda.objects.get(pk=azid)
  150. request.session['AziendaId'] = azienda.id
  151. request.session['AziendaIdEdit'] = azienda.id
  152. return HttpResponseRedirect(reverse('azienda:editAzienda'))
  153. if 'parsede' in request.POST:
  154. print('premuto tasto Par.Sede')
  155. seid = request.POST.get('parsede')
  156. print('sede passata',request.POST.get('parsede'))
  157. sede = Sede.objects.get(pk=seid)
  158. request.session['SedeId'] = sede.id
  159. request.session['SedeIdEdit'] = sede.id
  160. return HttpResponseRedirect(reverse('azienda:editSede'))
  161. if 'paramm' in request.POST:
  162. print('premuto tasto Par.Amministratore')
  163. amid = request.POST.get('paramm')
  164. print('amministratore passato',request.POST.get('paramm'))
  165. return HttpResponseRedirect(reverse('amministratore:editAmministratore'))
  166. if 'amministratore' in request.POST:
  167. print(' premuto tasto Amministratore')
  168. return HttpResponseRedirect(reverse('amministratore:welcome'))
  169. data['AziendaLista'] = assegnazioneazienda
  170. if 'azienda' in data and data['azienda'] != None:
  171. print('azienda',data['azienda'])
  172. print('azienda selezionata:',data['azienda'].nome)
  173. # costruisce la lista delle sedi.
  174. data['SedeLista'] = listaSEP(data['azienda'],data['admin'],"SEDE")[0]
  175. print('numero aziende',len(data['AziendaLista']))
  176. if 'SedeLista' in data:
  177. print('numero di sedi',len(data['SedeLista']))
  178. #for i in data['SedeLista']: print(":::",i.nome)
  179. ### permessi inizio ###
  180. data['permesso'] = getAMP(data['admin'])[0]
  181. print("******",data['azienda'])
  182. if 'azienda' in data:
  183. print('**** azienda presente ****')
  184. for t in getAZP(data['azienda'],data['admin'])[0]:
  185. if t not in data['permesso']:
  186. data['permesso'].append(t)
  187. if 'sede' in data:
  188. print('**** sede presente ****')
  189. for t in getSEP(data['sede'],data['admin']):
  190. if t not in data['permesso']:
  191. data['permesso'].append(t)
  192. print(data['permesso'])
  193. ### permessi fine ###
  194. return render(request,'azienda.welcome.html',data)
  195. # Edit/Creazione Azienda
  196. def editAzienda(request):
  197. if not 'AdminId' in request.session:
  198. return HttpResponseRedirect(reverse("login:start"))
  199. d = DataDict()
  200. data = d.getData()
  201. define = Define(request)
  202. data['admin'] = define.getAdmin()
  203. data['azienda'] = define.getAzienda()
  204. data['AziendaId'] = define.getAziendaId()
  205. data['sede'] = define.getSede()
  206. data['SedeId'] = define.getSedeId()
  207. data['Navbar'] = False
  208. ### permessi inizio ###
  209. data['permesso'] = getAMP(data['admin'])[0]
  210. print("******",data['azienda'])
  211. if 'azienda' in data:
  212. print('**** azienda presente ****')
  213. for t in getAZP(data['azienda'],data['admin'])[0]:
  214. if t not in data['permesso']:
  215. data['permesso'].append(t)
  216. if 'sede' in data:
  217. print('**** sede presente ****')
  218. for t in getSEP(data['sede'],data['admin']):
  219. if t not in data['permesso']:
  220. data['permesso'].append(t)
  221. print("Permessi Disponibili",data['permesso'])
  222. AdminId = request.session['AdminId']
  223. print('AdminId',AdminId)
  224. admin = Amministratore.objects.get(pk=AdminId)
  225. data['admin'] = admin
  226. print('admin',admin.id,admin.nome)
  227. ### azienda su cui effettuare le operazioni
  228. azienda = None
  229. aziendapresente = False
  230. if 'AziendaIdEdit' in request.session:
  231. print('trovato riferimento AziendaIdEdit',request.session.get('AziendaIdEdit'))
  232. azid = request.session.get('AziendaIdEdit')
  233. try:
  234. azienda = Azienda.objects.get(pk=azid)
  235. aziendapresente = True
  236. print('azienda trovata',azienda.nome)
  237. except Azienda.DoesNotExist as dnf:
  238. print(dnf)
  239. azienda = Azienda()
  240. if request.method == 'POST':
  241. print('un tasto è stato premuto')
  242. if 'indietro' in request.POST:
  243. return HttpResponseRedirect(reverse('azienda:welcome'))
  244. if 'AggiornaAziendaButton' in request.POST:
  245. print('premuto tasto "AggiornaAziendaButton"')
  246. nuovaazienda = formAzienda(request.POST)
  247. if nuovaazienda.is_valid():
  248. print("il form AggiornaAziendaButton' valido",request.POST)
  249. azienda.nome = nuovaazienda.cleaned_data.get('nome')
  250. azienda.mail = nuovaazienda.cleaned_data.get('mail')
  251. azienda.partitaiva = nuovaazienda.cleaned_data.get('partitaiva')
  252. azienda.cambiopassword = nuovaazienda.cleaned_data.get('cambiopassword')
  253. azienda.forzanuovapassword = nuovaazienda.cleaned_data.get('forzanuovapassword')
  254. azienda.otppassword = nuovaazienda.cleaned_data.get('otppassword')
  255. try:
  256. azienda.save()
  257. except IntegrityError as ie:
  258. print("Errore, azienda gia' presente:",azienda.nome,azienda.partitaiva)
  259. data['AziendaEsistente']=True
  260. if not 'AziendaEsistente' in data:
  261. request.session['AziendaIdEdit'] = azienda.id
  262. print('azienda:',azienda.id)
  263. request.session['AziendaId'] = azienda.id
  264. data['azienda'] = azienda
  265. ### generiamo un utente speciale per la gestione dei documenti aziendali
  266. print("Generazione utente speciale per {}".format(azienda.nome))
  267. utente = Utente()
  268. utente.azienda = azienda
  269. utente.special = True
  270. utente.login = azienda.nome
  271. utente.nome = "Document Store: {}".format(azienda.nome)
  272. utente.save()
  273. ### nel caso l'azienda non esista, si aggiungono i permessi di base
  274. print("data['admin']",data['admin'])
  275. if 'AZIENDA' in getAMP(data['admin'])[0]:
  276. print('getAMP: Azienda')
  277. setAZP(azienda,data['admin'],"AZIENDA")
  278. if 'AZIENDA.CREA' in getAMP(data['admin'])[0]:
  279. print('getAMP: AZIENDA.CREA')
  280. setAZP(azienda,data['admin'],"AZIENDA.CREA")
  281. if 'AZIENDA.EDIT' in getAMP(data['admin'])[0]:
  282. print('getAMP: AZIENDA.EDIT')
  283. setAZP(azienda,data['admin'],"AZIENDA.EDIT")
  284. if 'UTENTE' in getAMP(data['admin'])[0]:
  285. print('getAMP: UTENTE')
  286. setAZP(azienda,data['admin'],"UTENTE")
  287. if 'UTENTE.CREA' in getAMP(data['admin'])[0]:
  288. print('getAMP: UTENTE.CREA')
  289. setAZP(azienda,data['admin'],"UTENTE.CREA")
  290. if 'UTENTE.EDIT' in getAMP(data['admin'])[0]:
  291. print('getAMP: UTENTE.EDIT')
  292. setAZP(azienda,data['admin'],"UTENTE.EDIT")
  293. data['aziendaForm'] = formAzienda(request.POST)
  294. return render(request,'azienda.editAzienda.html',data)
  295. else:
  296. data['aziendaForm'] = formAzienda(request.POST)
  297. print("il form 'AggiornaAziendaButton' non è valido")
  298. if 'AvantiAziendaButton' in request.POST:
  299. print('premuto "AvantiAziendaButton"')
  300. ### puo' andare avanti solo se l'azienda gia' e' inserita
  301. if aziendapresente:
  302. print("azienda presente")
  303. return HttpResponseRedirect(reverse('azienda:editAziendaPermesso'))
  304. else:
  305. print("azienda non presente")
  306. formaziendafield = None
  307. if azienda:
  308. print('Abbiamo azienda',azienda.nome)
  309. tmp = dict()
  310. tmp['id'] = azienda.id
  311. tmp['nome'] = azienda.nome
  312. tmp['partitaiva'] = azienda.partitaiva
  313. tmp['mail'] = azienda.mail
  314. tmp['forzanuovapassword'] = azienda.forzanuovapassword
  315. tmp['cambiopassword'] = azienda.cambiopassword
  316. tmp['otppassword'] = azienda.otppassword
  317. formaziendafield = formAzienda(tmp)
  318. else:
  319. tmp = dict()
  320. tmp['nome'] = ''
  321. tmp['partitaiva'] = ''
  322. tmp['mail'] = user.mail
  323. tmp['forzanuovapassword'] = False
  324. tmp['cambiopassword' ] = False
  325. tmp['otppassword'] = False
  326. formaziendafield = formAzienda(tmp)
  327. data['aziendaForm'] = formaziendafield
  328. return render(request,'azienda.editAzienda.html',data)
  329. # edit Permessi Azienda
  330. def editAziendaPermesso(request):
  331. if not 'AdminId' in request.session:
  332. return HttpResponseRedirect(reverse("login:start"))
  333. d = DataDict()
  334. data = d.getData()
  335. define = Define(request)
  336. data['admin'] = define.getAdmin()
  337. data['azienda'] = define.getAzienda()
  338. data['AziendaId'] = define.getAziendaId()
  339. data['sede'] = define.getSede()
  340. data['SedeId'] = define.getSedeId()
  341. data['Navbar'] = False
  342. ### permessi inizio ###
  343. data['permesso'] = getAMP(data['admin'])[0]
  344. print("******",data['azienda'])
  345. if 'azienda' in data:
  346. print('**** azienda presente ****')
  347. for t in getAZP(data['azienda'],data['admin'])[0]:
  348. if t not in data['permesso']:
  349. data['permesso'].append(t)
  350. if 'sede' in data:
  351. print('**** sede presente ****')
  352. for t in getSEP(data['sede'],data['admin']):
  353. if t not in data['permesso']:
  354. data['permesso'].append(t)
  355. print("Permessi Disponibili",data['permesso'])
  356. AziendaId = request.session['AziendaId']
  357. print('AziendaId',AziendaId)
  358. azienda = Azienda.objects.get(pk=AziendaId)
  359. if request.method == 'POST':
  360. print('un tasto è stato premuto')
  361. if 'IndietroAziendaButton' in request.POST:
  362. return HttpResponseRedirect(reverse('azienda:editAzienda'))
  363. if 'FineAziendaButton' in request.POST:
  364. return HttpResponseRedirect(reverse('azienda:welcome'))
  365. if 'PermessoDaAggiungereButton' in request.POST:
  366. print('premuto "PermessoDaAggiungereButton"')
  367. formaziendapermessi = formAziendaPermessi(request.POST,amministratori=Amministratore.objects.all(),permessi=Permesso.objects.all())
  368. if formaziendapermessi.is_valid():
  369. print('formAziendaPermessi valida')
  370. amministratore = formaziendapermessi.cleaned_data.get('ListaAmministratori')
  371. permesso = formaziendapermessi.cleaned_data.get('ListaPermessi')
  372. print('amministratore da aggiungere',amministratore)
  373. print('permesso da aggiungere',permesso)
  374. for a in amministratore:
  375. for p in permesso:
  376. try:
  377. setAZP(azienda,a,Permesso.objects.get(pk=str(p)))
  378. except ValueError as ve:
  379. print('errore in seAZP')
  380. else:
  381. if 'errors' in formaziendapermessi:
  382. print('formAziendaPermessi Errore',formaziendapermessi['errors'])
  383. data['formaziendapermessi'] = formaziendapermessi
  384. if 'AssegnaIdenticiPermessiButton' in request.POST:
  385. print('premuto "AssegnaIdenticiPermessiButton"')
  386. listapermessidisponibili = getAZP(azienda,data['admin'])[0]
  387. print('listapermessidisponibili',listapermessidisponibili)
  388. formaziendapermessi = formAziendaPermessi(request.POST,amministratori=Amministratore.objects.all(),permessi=Permesso.objects.all())
  389. if formaziendapermessi.is_valid():
  390. print('formAziendaPermessi valida')
  391. amministratore = formaziendapermessi.cleaned_data.get('ListaAmministratori')
  392. for p in listapermessidisponibili:
  393. for a in amministratore:
  394. try:
  395. setAZP(azienda,a,p)
  396. except ValueError as ve:
  397. print('errore in setAZP')
  398. if 'CancellaAziendaPermessiButton' in request.POST:
  399. print('premuto "CancellaAziendaPermessiButton"')
  400. cancellaaziendaamministratoripermessi = request.POST.get('CancellaAziendaPermessiButton')
  401. print('CancellaAziendaAmministratoriPermessi',cancellaaziendaamministratoripermessi)
  402. azp = AZP.objects.get(pk=cancellaaziendaamministratoripermessi)
  403. if azp:
  404. print('Permesso Azienda Amministratore trovato - cancello')
  405. azp.delete()
  406. #else:
  407. data['listaAmministratore'] = listaAMMperAzienda(AziendaId)[1]
  408. data['listaAmministratore'] = sorted(data['listaAmministratore'], key = lambda x: x.amministratore.nome,reverse=False)
  409. print("listaAmministratore",len(data['listaAmministratore']))
  410. data['listaAmministratoreDaAggiungere'] = Amministratore.objects.all()
  411. data['listaPermessoDaAggiungere'] = Permesso.objects.filter(Q(classe="AZI")|Q(classe="SED")|Q(classe="DOC")|Q(classe="UTE"))
  412. return render(request,"azienda.editAzienda.permessi.html",data)
  413. # Edit / Creazione Sede
  414. def editSede(request):
  415. if not 'AdminId' in request.session:
  416. return HttpResponseRedirect(reverse("login:start"))
  417. d = DataDict()
  418. data = d.getData()
  419. define = Define(request)
  420. data['admin'] = define.getAdmin()
  421. data['azienda'] = define.getAzienda()
  422. data['AziendaId'] = define.getAziendaId()
  423. data['sede'] = define.getSede()
  424. data['SedeId'] = define.getSedeId()
  425. data['Navbar'] = False
  426. ### permessi inizio ###
  427. data['permesso'] = getAMP(data['admin'])[0]
  428. print("******",data['azienda'])
  429. if 'azienda' in data:
  430. print('**** azienda presente ****')
  431. for t in getAZP(data['azienda'],data['admin'])[0]:
  432. if t not in data['permesso']:
  433. data['permesso'].append(t)
  434. if 'sede' in data:
  435. print('**** sede presente ****')
  436. for t in getSEP(data['sede'],data['admin']):
  437. if t not in data['permesso']:
  438. data['permesso'].append(t)
  439. print("Permessi Disponibili",data['permesso'])
  440. ### azienda su cui effettuare le operazioni
  441. sede = None
  442. sedepresente = False
  443. if 'SedeIdEdit' in request.session:
  444. print('trovato riferimento SedeIdEdit',request.session.get('SedeIdEdit'))
  445. seid = request.session.get('SedeIdEdit')
  446. try:
  447. sede = Sede.objects.get(pk=seid)
  448. sedepresente = True
  449. print('sede trovata',data['sede'].nome)
  450. except Sede.DoesNotExist as dnf:
  451. print(dnf)
  452. sede = Sede()
  453. sede.azienda = data['azienda']
  454. print('sede.azienda',sede.azienda.nome)
  455. sede.cambiopassword = sede.azienda.cambiopassword
  456. sede.forzanuovapassword = sede.azienda.forzanuovapassword
  457. sede.otppassword = sede.azienda.otppassword
  458. if request.method == "POST":
  459. print('un tasto è stato premuto in editSede')
  460. if 'indietro' in request.POST:
  461. return HttpResponseRedirect(reverse('azienda:welcome'))
  462. if 'AggiornaSedeButton' in request.POST:
  463. print('premuto tasto "AggiornaSedeButton"')
  464. nuovasede = formSede(request.POST)
  465. if nuovasede.is_valid():
  466. print('il form "formSede" è valido')
  467. sede.nome = nuovasede.cleaned_data.get('nome')
  468. sede.mail = nuovasede.cleaned_data.get('mail')
  469. sede.cambiopassword = nuovasede.cleaned_data.get('cambiopassword')
  470. sede.forzanuovapassword = nuovasede.cleaned_data.get('forzanuovapassword')
  471. sede.otppassword = nuovasede.cleaned_data.get('otppassword')
  472. sede.info = nuovasede.cleaned_data.get('info')
  473. sede.identificativo = nuovasede.cleaned_data.get('identificativo')
  474. sede.save()
  475. request.session['SedeIdEdit'] = sede.id
  476. print('sede:',sede.id)
  477. print('azienda',sede.nome)
  478. request.session['SedeId'] = sede.id
  479. data['sede'] = sede
  480. # nel caso la sede non esista, vediamo di crearla
  481. print("data['admin']",data['admin'])
  482. if 'SEDE' in getAMP(data['admin'])[0]:
  483. print('getAMP: SEDE')
  484. setSEP(sede,data['admin'],"SEDE")
  485. if 'SEDE.CREA' in getAMP(data['admin'])[0]:
  486. print('getAMP: SEDE.CREA')
  487. setSEP(sede,data['admin'],"SEDE.CREA")
  488. if 'SEDE.EDIT' in getAMP(data['admin'])[0]:
  489. print('getAMP: SEDE.EDIT')
  490. setSEP(sede,data['admin'],"SEDE.EDIT")
  491. if 'UTENTE' in getAMP(data['admin'])[0]:
  492. print('getAMP: UTENTE')
  493. setSEP(sede,data['admin'],"UTENTE")
  494. if 'UTENTE.CREA' in getAMP(data['admin'])[0]:
  495. print('getAMP: UTENTE.CREA')
  496. setSEP(sede,data['admin'],"UTENTE.CREA")
  497. if 'UTENTE.EDIT' in getAMP(data['admin'])[0]:
  498. print('getAMP: UTENTE.EDIT')
  499. setSEP(sede,data['admin'],"UTENTE.EDIT")
  500. else:
  501. data['sedeForm'] = formSede(request.POST)
  502. if 'AvantiSedeButton' in request.POST:
  503. print('premuto "AvantiSedeButton"')
  504. ### puo' andare avanti solo se la sede gia' e' inserita
  505. if sedepresente:
  506. print("sede presente")
  507. return HttpResponseRedirect(reverse('azienda:editSedePermesso'))
  508. else:
  509. print("sede non presente")
  510. if 'CancellaSedePermessiButton' in request.POST:
  511. print('premuto "CancellaSedePermessiButton"')
  512. cancellasedeamministratoripermessi = request.POST.get('CancellaSedePermessiButton')
  513. print('CancellaSedeAmministratoriPermessi',cancellasedeamministratoripermessi)
  514. sep = SEP.objects.get(pk=cancellasedeamministratoripermessi)
  515. if sep:
  516. print('Permesso Sede Amministratore trovato - cancello')
  517. sep.delete()
  518. formsedefield = None
  519. if sede:
  520. print('Abbiamo sede',sede.nome)
  521. tmp = dict()
  522. tmp['nome'] = sede.nome
  523. tmp['info'] = sede.info
  524. tmp['identificativo'] = sede.identificativo
  525. tmp['cambiopassword'] = sede.cambiopassword
  526. tmp['forzanuovapassword'] = sede.forzanuovapassword
  527. tmp['otppassword'] = sede.otppassword
  528. print('stato tmp',tmp)
  529. formsedefield = formSede(tmp)
  530. data['sedeForm'] = formsedefield
  531. return render(request,'azienda.editSede.html',data)
  532. ### Edit permessi sede
  533. ### collegato a edit Sede, consente di modificare i permessi assegnati alla sede per gli utenti.
  534. def editSedePermesso(request):
  535. if not 'AdminId' in request.session:
  536. return HttpResponseRedirect(reverse("login:start"))
  537. d = DataDict()
  538. data = d.getData()
  539. define = Define(request)
  540. data['admin'] = define.getAdmin()
  541. data['azienda'] = define.getAzienda()
  542. data['AziendaId'] = define.getAziendaId()
  543. data['sede'] = define.getSede()
  544. data['SedeId'] = define.getSedeId()
  545. data['Navbar'] = False
  546. ### permessi inizio ###
  547. data['permesso'] = getAMP(data['admin'])[0]
  548. print("******",data['azienda'])
  549. SedeId = request.session['SedeId']
  550. print('SedeId',SedeId)
  551. sede = Sede.objects.get(pk=SedeId)
  552. if request.method == 'POST':
  553. print('un tasto è stato premuto in editSedePermesso')
  554. if 'IndietroSedeButton' in request.POST:
  555. return HttpResponseRedirect(reverse('azienda:editSede'))
  556. if 'FineAziendaButton' in request.POST:
  557. return HttpResponseRedirect(reverse('azienda:welcome'))
  558. if 'PermessoDaAggiungereButton' in request.POST:
  559. print('premuto "PermessoDaAggiungereButton"')
  560. formsedepermessi = formSedePermessi(request.POST,amministratori=Amministratore.objects.all())
  561. if formsedepermessi.is_valid():
  562. print('formSedePermessi valida')
  563. amministratore = formsedepermessi.cleaned_data.get('ListaAmministratori')
  564. permesso = formsedepermessi.cleaned_data.get('ListaPermessi')
  565. print('amministratore da aggiungere',amministratore)
  566. print('permesso da aggiungere',permesso)
  567. for a in amministratore:
  568. for p in permesso:
  569. try:
  570. setSEP(sede,a,Permesso.objects.get(pk=str(p)))
  571. except ValueError as ve:
  572. print('errore in setSEP')
  573. else:
  574. print('formSedePermessi Errore',formsedepermessi['errors'])
  575. data['formsedepermessi'] = formsedepermessi
  576. if 'AssegnaIdenticiPermessiButton' in request.POST:
  577. # print('premuto "AssegnaIdenticiPermessiButton"')
  578. listapermessidisponibili = getSEP(sede,data['admin'])[0]
  579. print('listapermessidisponibili',listapermessidisponibili)
  580. formsedepermessi = formSedePermessi(request.POST,amministratori=Amministratore.objects.all(),permessi=Permesso.objects.all())
  581. if formaziendapermessi.is_valid():
  582. print('formSedePermessi valida')
  583. amministratore = formsedepermessi.cleaned_data.get('ListaAmministratori')
  584. for p in listapermessidisponibili:
  585. for a in amministratore:
  586. try:
  587. setSEP(sede,a,p)
  588. except ValueError as ve:
  589. print('errore in setSEP')
  590. if 'CancellaSedePermessiButton' in request.POST:
  591. print('premuto "CancellaSedePermessiButton"')
  592. cancellasedeamministratoripermessi = request.POST.get('CancellaSedePermessiButton')
  593. print('CancellaSedeAmministratoriPermessi',cancellasedeamministratoripermessi)
  594. sep = SEP.objects.get(pk=cancellasedeamministratoripermessi)
  595. if sep:
  596. print('Permesso Sede Amministratore trovato - cancello')
  597. sep.delete()
  598. data['listaAmministratore'] = listaAMMperSede(data['SedeId'])[1]
  599. data['listaAmministratore'] = sorted(data['listaAmministratore'], key = lambda x: x.amministratore.nome,reverse=False)
  600. print("listaAmministratore",len(data['listaAmministratore']))
  601. data['listaAmministratoreDaAggiungere'] = Amministratore.objects.all()
  602. data['listaPermessoDaAggiungere'] = Permesso.objects.filter(Q(classe="SED")|Q(classe="DOC")|Q(classe="UTE"))
  603. return render(request,"azienda.editSede.permessi.html",data)
  604. def editAziendaDocumento(request):
  605. if not 'AdminId' in request.session:
  606. return HttpResponseRedirect(reverse("login:start"))
  607. d = DataDict()
  608. data = d.getData()
  609. define = Define(request)
  610. data['admin'] = define.getAdmin()
  611. data['azienda'] = define.getAzienda()
  612. data['AziendaId'] = define.getAziendaId()
  613. data['sede'] = define.getSede()
  614. data['SedeId'] = define.getSedeId()
  615. data['Navbar'] = False
  616. ### permessi inizio ###
  617. data['permesso'] = getAMP(data['admin'])[0]
  618. print("******",data['azienda'])
  619. if 'azienda' in data:
  620. print('**** azienda presente ****')
  621. for t in getAZP(data['azienda'],data['admin'])[0]:
  622. if t not in data['permesso']:
  623. data['permesso'].append(t)
  624. if 'sede' in data:
  625. print('**** sede presente ****')
  626. for t in getSEP(data['sede'],data['admin']):
  627. if t not in data['permesso']:
  628. data['permesso'].append(t)
  629. print("Permessi Disponibili",data['permesso'])
  630. AziendaId = request.session['AziendaId']
  631. print('AziendaId',AziendaId)
  632. azienda = Azienda.objects.get(pk=AziendaId)
  633. if request.method == 'POST':
  634. print('un tasto è stato premuto')
  635. return render(request,"azienda.editAzienda.documenti.html",data)