views.py 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022
  1. from django.shortcuts import render
  2. from .models import *
  3. from .forms import *
  4. from att.views import *
  5. from config.views import *
  6. from random import randint
  7. from django.http import HttpResponse,HttpResponseRedirect
  8. from django.urls import reverse
  9. from sicurezza.views import *
  10. from config.datafunc import *
  11. from django.db.models import Q
  12. def welcome(request):
  13. if not 'AdminId' in request.session:
  14. print("Non rilevo presensa AdminId in request.session")
  15. return HttpResponseRedirect(reverse("login:start"))
  16. ### funzioni esterne ###
  17. d = DataDict()
  18. data = d.getData()
  19. data['NavBar']=True
  20. data['ShowSelectAzienda'] = False
  21. data['ShowSelectSede'] = False
  22. define = Define(request)
  23. data['admin'] = define.getAdmin()
  24. data['azienda'] = define.getAzienda()
  25. data['AziendaId'] = define.getAziendaId()
  26. data['sede'] = define.getSede()
  27. data['SedeId'] = define.getSedeId()
  28. print('cazzo cazzo')
  29. ### funzioni esterne fine ###
  30. ### permessi inizio ###
  31. data['permesso'] = getAMP(data['admin'])[0]
  32. print("******",data['azienda'])
  33. if 'azienda' in data:
  34. print('**** azienda presente ****')
  35. for t in getAZP(data['azienda'],data['admin'])[0]:
  36. if t not in data['permesso']:
  37. data['permesso'].append(t)
  38. if 'sede' in data:
  39. print('**** sede presente ****')
  40. for t in getSEP(data['sede'],data['admin'])[0]:
  41. if t not in data['permesso']:
  42. data['permesso'].append(t)
  43. print('permessi assegnati:',data['permesso'])
  44. ### permessi fine ###
  45. amministratorelista = Amministratore.objects.all()
  46. data['amministratorelista'] = amministratorelista
  47. print(len(amministratorelista))
  48. '''
  49. # mostriamo gli amministratori per l'azienda
  50. if data['azienda']:
  51. print('trovato riferimento per azienda')
  52. amministratorelista = data['azienda'].assegnazioneazienda_set.all()
  53. tmp=[]
  54. for al in amministratorelista:
  55. print(al.amministratore.nome)
  56. tmp.append(al.amministratore)
  57. data['amministratorelista'] = tmp
  58. if data['sede']:
  59. print('trovato riferimento per sede')
  60. amministratorelista = data['sede'].assegnazionesede_set.all()
  61. tmp = []
  62. for al in amministratorelista:
  63. try:
  64. print(al.amministratore.nome)
  65. tmp1 = al.amministratore
  66. tmp.append(al.amministratore)
  67. except AttributeError as ae:
  68. print(ae)
  69. data['amministratorelista'] = tmp
  70. '''
  71. data['amministratorelista'] = sorted(data['amministratorelista'], key = lambda x: x.login,reverse=False)
  72. data['amministratorelistalen'] = len(data['amministratorelista'])
  73. if request.method == 'POST':
  74. print("qualcosa e' stato premuto")
  75. if 'indietro' in request.POST:
  76. return HttpResponseRedirect(reverse("azienda:welcome"))
  77. if 'sceltanuovo' in request.POST:
  78. request.session['AmministratoreEditId'] = 0
  79. print('richiesto nuovo record')
  80. request.session['masteramm'] = True
  81. print('masteramm in edit adm',request.session['masteramm'])
  82. return HttpResponseRedirect(reverse('amministratore:edit'))
  83. formamministratoreeditid = FormAmministratoreEditId(request.POST,amministratore=data['amministratorelista'])
  84. if formamministratoreeditid.is_valid():
  85. scelta = formamministratoreeditid.cleaned_data.get('scelta')
  86. request.session['AmministratoreEditId'] = scelta
  87. print("Scelta effettuata",scelta)
  88. request.session['masteramm'] = True
  89. print('masteramm in edit adm',request.session['masteramm'])
  90. return HttpResponseRedirect(reverse("amministratore:edit"))
  91. #data['amministratorelista'] = amministratorelista
  92. #data['numeroRecordAmministratore'] = len(amministratorelista)
  93. #print(data)
  94. return render(request,'amministratore.welcome.html',data)
  95. def edit(request):
  96. '''
  97. edit amministratore o simile
  98. sulla base dei diritti assegnati, puo' leggero e/o scrivere nell'utente
  99. nella sede o nell'azienda.
  100. i diritti sono assegnati sulla base dell'utente e non successivamente
  101. all'assegnazione, tanto se l'utente ha una zona assegnata, quella puo' vedere
  102. e basta.
  103. '''
  104. if not 'AdminId' in request.session:
  105. return HttpResponseRedirect(reverse("login:start"))
  106. data = dict()
  107. data['HeaderTitle'] = getConfig('HeaderTitle')
  108. data['Navbar']=False
  109. if 'AdminId' in request.session:
  110. data['AdminId'] = request.session['AdminId']
  111. admin = Amministratore.objects.get(pk=data['AdminId'])
  112. data['admin'] = admin
  113. print('admin',admin.id,admin.nome)
  114. data['permesso'] = getAMP(admin)[0]
  115. azienda = None
  116. if 'AziendaId' in request.session:
  117. AziendaId = request.session['AziendaId']
  118. print('AziendaId',AziendaId)
  119. azienda = Azienda.objects.get(pk=AziendaId)
  120. data['azienda'] = azienda
  121. sede = None
  122. if 'SedeId' in request.session:
  123. SedeId = request.session['SedeId']
  124. print('SedeId',SedeId)
  125. try:
  126. sede = Sede.objects.get(pk=SedeId)
  127. except Sede.DoesNotExist as dne:
  128. print("Sede non esiste")
  129. data['sede'] = sede
  130. amministratore = None
  131. print(request)
  132. if 'AmministratoreEditId' in request.session:
  133. amministratoreEditId = request.session.get('AmministratoreEditId')
  134. try:
  135. amministratore = Amministratore.objects.get(pk=amministratoreEditId)
  136. except Amministratore.DoesNotExist as dne:
  137. amministratore = Amministratore()
  138. amministratore.pin = str(randint(100000,999999))
  139. print('amministratore',amministratore.id,amministratore.nome)
  140. print("request.method",request.method)
  141. if 'masteramm' in request.session:
  142. print('masteramm',request.session['masteramm'])
  143. data['MASTERAMM'] = request.session['masteramm']
  144. if request.method == 'POST':
  145. print("qualcosa e' stato premuto")
  146. if 'indietro' in request.POST:
  147. return HttpResponseRedirect(reverse("amministratore:welcome"))
  148. if 'AmministratoreDirittiAmministratoreButton' in request.POST:
  149. print("Un tasto è stato premuto 'AmministratoreDirittiAmministratoreButton'")
  150. return HttpResponseRedirect(reverse("amministratore:editAMP"))
  151. if 'AmministratoreCancellaButton' in request.POST:
  152. print('editAmministratore: premuto "AmministratoreCancellaButton"')
  153. amp = amministratore.amp_set.all()
  154. azp = amministratore.azp_set.all()
  155. sep = amministratore.sep_set.all()
  156. print(amministratore.nome)
  157. print(len(amp),amp)
  158. print(len(azp),azp)
  159. print(len(sep),sep)
  160. for x in sep:
  161. x.delete()
  162. for x in azp:
  163. x.delete()
  164. for x in amp:
  165. x.delete()
  166. amministratore.delete()
  167. return HttpResponseRedirect(reverse("amministratore:welcome"))
  168. if 'AmministratoreDirittiAziendaButton' in request.POST:
  169. print('edit azienda: premuto "AmministratoreDirittiAziendaButton"')
  170. return HttpResponseRedirect(reverse("amministratore:editAZ"))
  171. if 'AmministratoreUpdateButton' in request.POST:
  172. formamministratore = FormAmministratore(request.POST)
  173. if formamministratore.is_valid():
  174. print('form valida formamministratore')
  175. amministratore.login=formamministratore.cleaned_data.get('login')
  176. amministratore.nome=formamministratore.cleaned_data.get('nome')
  177. amministratore.mail=formamministratore.cleaned_data.get('mail')
  178. amministratore.pin=formamministratore.cleaned_data.get('pin')
  179. amministratore.save()
  180. print('id amministratore salvato/nuovo',amministratore.id,":",amministratore.nome)
  181. request.session['AmministratoreEditId'] = amministratore.id
  182. return HttpResponseRedirect(reverse('amministratore:welcome'))
  183. tmp = dict()
  184. tmp['nome'] = amministratore.nome
  185. tmp['login'] = amministratore.login
  186. tmp['pin'] = amministratore.pin
  187. tmp['mail'] = amministratore.mail
  188. data['amministratore'] = FormAmministratore(tmp)
  189. if amministratore.id:
  190. # elenco aziende autorizzate per amministratore
  191. data['listaazienda'] = listaAZP(amministratore)[0]
  192. print('lista azienda',len(data['listaazienda']))
  193. # elenco dei permessi per amministratore
  194. data['listapermesso'] = getAMP(amministratore)[2]
  195. print('lista permesso',len(data['listapermesso']))
  196. #calcola la differenza tra i permessi assegnati e quelli disponibili
  197. data['listapermessotutto'] = getPermesso()
  198. data['listapermessomancante'] = getAMP(amministratore)[1]
  199. data['listapermessodiff'] = list(set(data['listapermessotutto']) - set(data['listapermessomancante']))
  200. print('Quanti ne mancano',len(data['listapermessodiff']),data['listapermessodiff'])
  201. #calcolo la differenza tra tutte le aziende e le aziende sottoposte a permesso
  202. listaaziendatutte = Azienda.objects.all()
  203. #data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda']))
  204. data['listaaziendadiff'] = sorted(list(set(listaaziendatutte)-set(data['listaazienda'])), key = lambda x: x.nome,reverse=False)
  205. print('Differenza aziende',len(data['listaaziendadiff']))
  206. return render(request,'amministratore.edit.html',data)
  207. def editAMP(request):
  208. ### consente di aggiornare i diritti a livello di amministratore ###
  209. if not 'AdminId' in request.session:
  210. return HttpResponseRedirect(reverse("login:start"))
  211. ### funzioni esterne ###
  212. d = DataDict()
  213. data = d.getData()
  214. data['NavBar']=True
  215. data['ShowSelectAzienda'] = False
  216. data['ShowSelectSede'] = False
  217. define = Define(request)
  218. data['admin'] = define.getAdmin()
  219. data['azienda'] = define.getAzienda()
  220. data['AziendaId'] = define.getAziendaId()
  221. data['sede'] = define.getSede()
  222. data['SedeId'] = define.getSedeId()
  223. ### funzioni esterne fine ###
  224. if 'AdminId' in request.session:
  225. data['AdminId'] = request.session['AdminId']
  226. admin = Amministratore.objects.get(pk=data['AdminId'])
  227. data['admin'] = admin
  228. print('admin',admin.id,admin.nome)
  229. data['permesso'] = getAMP(admin)[0]
  230. amministratore = None
  231. if 'AmministratoreEditId' in request.session:
  232. amministratoreEditId = request.session.get('AmministratoreEditId')
  233. try:
  234. amministratore = Amministratore.objects.get(pk=amministratoreEditId)
  235. except Amministratore.DoesNotExist as dne:
  236. return HttpResponseRedirect(reverse("amministratore:edit"))
  237. print('amministratore',amministratore.id,amministratore.login,amministratore.nome)
  238. data['amministratore'] = amministratore
  239. data['listapermessiassegnati'] = getAMP(data['amministratore'])[1]
  240. print('listapermessiassegnati',data['listapermessiassegnati'])
  241. data['listapermessiassegnabili'] = Permesso.objects.all()
  242. print('listapermessiassegnabili',data['listapermessiassegnabili'])
  243. if request.method == 'POST':
  244. if 'AmministratoreButton' in request.POST:
  245. print("Un tasto è stato premuto 'AmministratoreButton'")
  246. return HttpResponseRedirect(reverse("amministratore:edit"))
  247. if 'AmministratoreReturnButton' in request.POST:
  248. print("Un tasto èstato premuto 'AmministratoreReturnButton'")
  249. return HttpResponseRedirect(reverse("amministratore:welcome"))
  250. if 'indietro' in request.POST:
  251. print("Un tasto è stato premuto 'Indietro'")
  252. return HttpResponseRedirect(reverse("azienda:welcome"))
  253. formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST,permessi=data['listapermessiassegnabili'])
  254. if formpermessodaaggiungere.is_valid():
  255. print('formpermessodaaggiungere valido')
  256. permesso = formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere')
  257. print('*' * 10)
  258. setAMP(amministratore,int(permesso))
  259. print('*' * 10)
  260. else:
  261. print('non va: formpermessodaaggiungere',formpermessodaaggiungere)
  262. print('*' * 20)
  263. formpermessodarimuovere = FormPermessoDaRimuovere(request.POST)
  264. if formpermessodarimuovere.is_valid():
  265. print('formpermessodarimuovere valido')
  266. permesso = formpermessodarimuovere.cleaned_data.get('ConfermaCancellazionePermesso')
  267. print('ConfermaCancellazionePermesso',permesso)
  268. delAMP(amministratore,permesso)
  269. else:
  270. print('non va: formpermessodarimuovere',formpermessodarimuovere)
  271. else:
  272. print('che merda do operazione')
  273. print(request.POST)
  274. data['listapermessiassegnati'] = getAMP(data['amministratore'])[1]
  275. print('listapermessiassegnati',data['listapermessiassegnati'])
  276. data['listapermessiassegnabili'] = Permesso.objects.all()
  277. print('listapermessiassegnabili',data['listapermessiassegnabili'])
  278. return render(request,'amministratore.edit.AMP.html',data)
  279. def editAZ(request):
  280. ### edit lista aziende autorizzate
  281. if not 'AdminId' in request.session:
  282. return HttpResponseRedirect(reverse("login:start"))
  283. ### funzioni esterne ###
  284. d = DataDict()
  285. data = d.getData()
  286. data['NavBar']=True
  287. data['ShowSelectAzienda'] = False
  288. data['ShowSelectSede'] = False
  289. define = Define(request)
  290. data['admin'] = define.getAdmin()
  291. data['azienda'] = define.getAzienda()
  292. data['AziendaId'] = define.getAziendaId()
  293. data['sede'] = define.getSede()
  294. data['SedeId'] = define.getSedeId()
  295. ### funzioni esterne fine ###
  296. if 'AdminId' in request.session:
  297. data['AdminId'] = request.session['AdminId']
  298. admin = Amministratore.objects.get(pk=data['AdminId'])
  299. data['admin'] = admin
  300. print('admin',admin.id,admin.nome)
  301. data['permesso'] = getAMP(admin)[0]
  302. listaaziendatutte = Azienda.objects.all()
  303. if 'paramm' in request.session and request.session['paramm']:
  304. data['DONTSHOWDIRITTI']=True
  305. amministratore = None
  306. if 'AmministratoreEditId' in request.session:
  307. amministratoreEditId = request.session.get('AmministratoreEditId')
  308. try:
  309. amministratore = Amministratore.objects.get(pk=amministratoreEditId)
  310. except Amministratore.DoesNotExist as dne:
  311. return HttpResponseRedirect(reverse("amministratore:edit"))
  312. print('amministratore',amministratore.id,amministratore.login,amministratore.nome)
  313. data['amministratore'] = amministratore
  314. if amministratore:
  315. data['listaazienda'] = listaAZP(amministratore)[0]
  316. data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda']))
  317. else:
  318. data['listaaziendadiff'] = list(set(listaaziendatutte))
  319. #parliamo di diritti assegnati all'azienda.
  320. data['dirittiAZIENDA'] = Permesso.objects.filter(Q(classe='AZI')|Q(classe='SED'))
  321. print('dirittiAZIENDA',len(data['dirittiAZIENDA']))
  322. if request.method == 'POST':
  323. print("qualcosa e' stato premuto in editAZ")
  324. if 'AmministratoreReturnButton' in request.POST:
  325. print("Un tasto è stato premuto 'AmministratoreReturnButton'")
  326. return HttpResponseRedirect(reverse("amministratore:welcome"))
  327. if 'AmministratoreButton' in request.POST:
  328. print("Un tasto è stato premuto 'AmministratoreButton'")
  329. return HttpResponseRedirect(reverse("amministratore:edit"))
  330. if 'indietro' in request.POST:
  331. print("Un tasto è stato premuto 'Indietro'")
  332. return HttpResponseRedirect(reverse("azienda:welcome"))
  333. if 'AziendaDaAggiungereButton' in request.POST:
  334. print('un tasto è stato premuto AziendaDaAggiungereButton')
  335. formaziendadaaggiungere = FormAziendaDaAggiungere(request.POST,azienda=listaaziendatutte)
  336. if formaziendadaaggiungere.is_valid():
  337. print('AziendaDaAggiungere, form valida')
  338. azienda = formaziendadaaggiungere.cleaned_data.get('ListaAziendaDaAggiungere')
  339. print(azienda)
  340. setAZP(azienda,amministratore,'AZIENDA')
  341. else:
  342. print('AziendaDaAggiungere, form non valido')
  343. if 'SedeButton' in request.POST:
  344. print("Un tasto è stato premuto 'SedeButton'")
  345. azienda = request.POST.get('SedeButton')
  346. request.session['EditAziendaId'] = azienda
  347. return HttpResponseRedirect(reverse("amministratore:editSE"))
  348. if 'PermessoButton' in request.POST:
  349. print("Un tasto è stato premuto 'PermessoButton")
  350. azienda = request.POST.get('PermessoButton')
  351. request.session['EditAziendaPermessoId'] = azienda
  352. return HttpResponseRedirect(reverse("amministratore:editAZP"))
  353. if 'ConfermaCancellazioneAzienda' in request.POST:
  354. print("Un tasto è stato premuto 'ConfermaCancellazioneAzienda'")
  355. azi = int(request.POST.get('ConfermaCancellazioneAzienda'))
  356. delAZP(azi,amministratore)
  357. if amministratore:
  358. data['listaazienda'] = listaAZP(amministratore)[0]
  359. data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda']))
  360. else:
  361. data['listaaziendadiff'] = list(set(listaaziendatutte))
  362. data['listaaziendadiff'] = sorted(data['listaaziendadiff'], key = lambda x: x.nome,reverse=False)
  363. return render(request,'amministratore.edit.AZ.html',data)
  364. def editAZP(request):
  365. ### edit diritti associati all'azienda.
  366. ### in questa sezione procediamo con l'assegnare o rimuovere i diritti di questo amministratore
  367. ### per le aziende in elenco.
  368. if not 'AdminId' in request.session:
  369. return HttpResponseRedirect(reverse("login:start"))
  370. ### funzioni esterne ###
  371. d = DataDict()
  372. data = d.getData()
  373. data['NavBar']=True
  374. data['ShowSelectAzienda'] = False
  375. data['ShowSelectSede'] = False
  376. define = Define(request)
  377. data['admin'] = define.getAdmin()
  378. data['azienda'] = define.getAzienda()
  379. data['AziendaId'] = define.getAziendaId()
  380. data['sede'] = define.getSede()
  381. data['SedeId'] = define.getSedeId()
  382. ### funzioni esterne fine ###
  383. if 'AdminId' in request.session:
  384. data['AdminId'] = request.session['AdminId']
  385. admin = Amministratore.objects.get(pk=data['AdminId'])
  386. data['admin'] = admin
  387. print('admin',admin.id,admin.nome)
  388. data['permessoAMP'] = getAMP(admin)[1]
  389. amministratore = None
  390. if 'AmministratoreEditId' in request.session:
  391. amministratoreEditId = request.session.get('AmministratoreEditId')
  392. try:
  393. amministratore = Amministratore.objects.get(pk=amministratoreEditId)
  394. except Amministratore.DoesNotExist as dne:
  395. return HttpResponseRedirect(reverse("amministratore:edit"))
  396. print('amministratore',amministratore.id,amministratore.login,amministratore.nome)
  397. data['amministratore'] = amministratore
  398. if 'EditAziendaPermessoId' in request.session:
  399. azienda = Azienda.objects.get(pk=request.session.get('EditAziendaPermessoId'))
  400. print('azienda',azienda.nome)
  401. data['aziendaOnWork'] = azienda
  402. data['permessoAZP'] = getAZP(azienda,amministratore)[1]
  403. if 'paramm' in request.session and request.session['paramm']:
  404. data['DONTSHOWDIRITTI']=True
  405. print('amministratore',amministratore.id,amministratore.login,amministratore.nome)
  406. data['amministratore'] = amministratore
  407. ####################################
  408. listadirittidisponibili= Permesso.objects.filter(Q(classe='AZI')|Q(classe='SED')|Q(classe='UTE')|Q(classe='DOC'))
  409. # diciamo che fatta cosi' mi pare una pecionata, ma funzionata. magari va ottimizzata un po'
  410. print(type(listadirittidisponibili))
  411. ldd = list()
  412. for i in listadirittidisponibili:
  413. ldd.append(i)
  414. print(type(ldd))
  415. print('*' * 20)
  416. data['listapermessiassegnabili'] = list()
  417. for i in ldd:
  418. if i not in data['permessoAZP']:
  419. data['listapermessiassegnabili'].append(i)
  420. ##########################################
  421. if request.method == 'POST':
  422. print("qualcosa e' stato premuto")
  423. if 'AmministratoreReturnButton' in request.POST:
  424. print("Un tasto è stato premuto 'AmministratoreReturnButton'")
  425. return HttpResponseRedirect(reverse("amministratore:welcome"))
  426. if 'AmministratoreButton' in request.POST:
  427. print("Un tasto è stato premuto 'AmministratoreButton'")
  428. return HttpResponseRedirect(reverse("amministratore:edit"))
  429. if 'AmministratoreAziendaButton' in request.POST:
  430. print("Un tasto è stato premuto 'AmministratoreAziendaButton'")
  431. return HttpResponseRedirect(reverse("amministratore:editAZ"))
  432. if 'PermessoDaAggiungereButton' in request.POST:
  433. print("Un tasto è stato premuto 'PermessoDaAggiungereButton'")
  434. formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST,permessi=data['listapermessiassegnabili'])
  435. if formpermessodaaggiungere.is_valid():
  436. print('listapermessidaaggiungere',formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere'))
  437. setAZP(azienda,amministratore,int(formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere')))
  438. else:
  439. print('errore formpermessodaaggiungere',formpermessodaaggiungere)
  440. if 'indietro' in request.POST:
  441. print("Un tasto è stato premuto 'Indietro'")
  442. return HttpResponseRedirect(reverse("azienda:welcome"))
  443. if 'ConfermaCancellazionePermesso' in request.POST:
  444. print("Un tasto è stato premuto 'ConfermaCancellazionePermesso'")
  445. delAZP(azienda,amministratore,int(request.POST.get('ConfermaCancellazionePermesso')))
  446. data['permessoAZP'] = getAZP(azienda,amministratore)[1]
  447. ####################################
  448. listadirittidisponibili= Permesso.objects.filter(Q(classe='AZI')|Q(classe='SED')|Q(classe='UTE')|Q(classe='DOC'))
  449. # diciamo che fatta cosi' mi pare una pecionata, ma funzionata. magari va ottimizzata un po'
  450. print(type(listadirittidisponibili))
  451. ldd = list()
  452. for i in listadirittidisponibili:
  453. ldd.append(i)
  454. print(type(ldd))
  455. print('*' * 20)
  456. data['listapermessiassegnabili'] = list()
  457. for i in ldd:
  458. if i not in data['permessoAZP']:
  459. data['listapermessiassegnabili'].append(i)
  460. ##########################################
  461. return render(request,'amministratore.edit.AZP.html',data)
  462. def editSE(request):
  463. ### edit diritti associati alla sede
  464. ### in questa sezione procediamo con l'assegnare o rimuovere i diritti di questo amministratore
  465. ### per le sedi in elenco.
  466. if not 'AdminId' in request.session:
  467. return HttpResponseRedirect(reverse("login:start"))
  468. ### funzioni esterne ###
  469. d = DataDict()
  470. data = d.getData()
  471. data['NavBar']=True
  472. data['ShowSelectAzienda'] = False
  473. data['ShowSelectSede'] = False
  474. define = Define(request)
  475. data['admin'] = define.getAdmin()
  476. data['azienda'] = define.getAzienda()
  477. data['AziendaId'] = define.getAziendaId()
  478. data['sede'] = define.getSede()
  479. data['SedeId'] = define.getSedeId()
  480. ### funzioni esterne fine ###
  481. if not 'EditAziendaId' in request.session:
  482. HttpResponseRedirect(reverse("amministratore:editAZ"))
  483. if 'AdminId' in request.session:
  484. data['AdminId'] = request.session['AdminId']
  485. admin = Amministratore.objects.get(pk=data['AdminId'])
  486. data['admin'] = admin
  487. print('admin',admin.id,admin.nome)
  488. data['permesso'] = getAMP(admin)[0]
  489. amministratore = None
  490. if 'AmministratoreEditId' in request.session:
  491. amministratoreEditId = request.session.get('AmministratoreEditId')
  492. try:
  493. amministratore = Amministratore.objects.get(pk=amministratoreEditId)
  494. except Amministratore.DoesNotExist as dne:
  495. return HttpResponseRedirect(reverse("amministratore:editSE"))
  496. print('amministratore',amministratore.id,amministratore.login,amministratore.nome)
  497. data['amministratore'] = amministratore
  498. azienda = Azienda.objects.get(pk=request.session.get('EditAziendaId'))
  499. print('azienda',azienda.nome)
  500. data['aziendaOnWork'] = azienda
  501. data['listasede'] = listaSEP(azienda,amministratore.id,"SEDE")[0]
  502. data['listasede'].sort(key=lambda x: x.nome,reverse=False)
  503. print("data['listasede']",len(data['listasede']),type(data['listasede']))
  504. listasedetutte = azienda.sede_set.all().order_by('nome')
  505. print('listasedetutte',len(listasedetutte))
  506. data['listasedediff'] = list(set(listasedetutte)-set(data['listasede']))
  507. data['listasedediff'].sort(key=lambda x: x.nome,reverse=False)
  508. #data['listasedediff'] = listasedetutte
  509. print("data['listasedediff']",len(data['listasedediff']))
  510. # parliamo di diritti relativi alle sedi
  511. data['dirittiSEDE'] = Permesso.objects.filter(classe='SED')
  512. print('dirittiSEDE',len(data['dirittiSEDE']))
  513. print('minchia')
  514. if request.method == 'POST':
  515. print("qualcosa é stato premuto")
  516. if 'AmministratoreReturnButton' in request.POST:
  517. print("Un tasto è stato premuto 'AmministratoreReturnButton'")
  518. return HttpResponseRedirect(reverse("amministratore:welcome"))
  519. if 'AmministratoreButton' in request.POST:
  520. print("Un tasto è stato premuto 'AmministratoreButton'")
  521. return HttpResponseRedirect(reverse("amministratore:edit"))
  522. if 'AmministratoreAziendaButton' in request.POST:
  523. print("Un tasto è stato premuto 'AmministratoreAziendaButton'")
  524. return HttpResponseRedirect(reverse("amministratore:editAZ"))
  525. if 'AmministratoreEditAZPButton' in request.POST:
  526. print("Un tasto è stato premuto 'AmministratoreEditAZPButton'")
  527. return HttpResponseRedirect(reverse("amministratore:editAZ"))
  528. if 'PermessoButton' in request.POST:
  529. print("Un tasto è stato premuto 'PermessoButton")
  530. sede = request.POST.get('PermessoButton')
  531. request.session['EditSedePermessoId'] = sede
  532. return HttpResponseRedirect(reverse("amministratore:editSEP"))
  533. if 'SedeConfermaCancellazionePermessoButton' in request.POST:
  534. print("un tasto è stato premuto 'SedeConfermaCancellazionePermessoButton'")
  535. sede = request.POST['SedeConfermaCancellazionePermessoButton']
  536. print('Sede da rimuovere',sede)
  537. p = Permesso.objects.get(nome="SEDE")
  538. lista = SEP.objects.filter(sede=sede,amministratore=amministratore,permesso=p)
  539. print('lista lista',lista)
  540. for p in lista:
  541. p.delete()
  542. p = Permesso.objects.get(nome="DOCUMENTO")
  543. lista = SEP.objects.filter(sede=sede,amministratore=amministratore,permesso=p)
  544. print('lista lista',lista)
  545. for p in lista:
  546. p.delete()
  547. p = Permesso.objects.get(nome="UTENTE")
  548. lista = SEP.objects.filter(sede=sede,amministratore=amministratore,permesso=p)
  549. print('lista lista',lista)
  550. for p in lista:
  551. p.delete()
  552. if 'SedeDaAggiungereButton' in request.POST:
  553. print('un tasto è stato premuto SedeDaAggiungereButton')
  554. formsededaaggiungere = FormSedeDaAggiungere(request.POST,sede=data['listasedediff'])
  555. if formsededaaggiungere.is_valid():
  556. print('SedeDaAggiungere, form valida')
  557. sede = formsededaaggiungere.cleaned_data.get('ListaSedeDaAggiungere')
  558. print('id sede da aggiungere',sede)
  559. setSEP(sede,amministratore,'SEDE')
  560. setSEP(sede,amministratore,'UTENTE')
  561. setSEP(sede,amministratore,'DOCUMENTO')
  562. else:
  563. print('SedeDaAggiungere, form non valido')
  564. if 'SedePermessoUpdateButton' in request.POST:
  565. print("Un tasto è stato premuto 'SedePermessoUpdate'")
  566. print(request.POST)
  567. formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST)
  568. formpermessodaaggiungere.c(Permesso.objects.filter(classe="SED"))
  569. if formpermessodaaggiungere.is_valid():
  570. print('formpermessodaaggiungere è valido')
  571. print("cazzo cazzo")
  572. else:
  573. print('errore',formpermessodaaggiungere)
  574. #formpermessoupdate = form.PermessoUpdate(request.POST)
  575. data['listasede'] = listaSEP(azienda,amministratore.id,"SEDE")[0]
  576. data['listasede'].sort(key=lambda x: x.nome,reverse=False)
  577. print("data['listasede']",len(data['listasede']),type(data['listasede']))
  578. listasedetutte = azienda.sede_set.all().order_by('nome')
  579. print('listasedetutte',len(listasedetutte))
  580. data['listasedediff'] = list(set(listasedetutte)-set(data['listasede']))
  581. data['listasedediff'].sort(key=lambda x: x.nome,reverse=False)
  582. #data['listasedediff'] = listasedetutte
  583. print("data['listasedediff']",len(data['listasedediff']))
  584. # parliamo di diritti relativi alle sedi
  585. data['dirittiSEDE'] = Permesso.objects.filter(classe='SED')
  586. print('dirittiSEDE',len(data['dirittiSEDE']))
  587. return render(request,'amministratore.edit.SE.html',data)
  588. def editSEP(request):
  589. ### edit diritti associati all sede.
  590. ### in questa sezione procediamo con l'assegnare o rimuovere i diritti di questo amministratore
  591. ### per le aziende in elenco.
  592. if not 'AdminId' in request.session:
  593. return HttpResponseRedirect(reverse("login:start"))
  594. ### funzioni esterne ###
  595. d = DataDict()
  596. data = d.getData()
  597. data['NavBar']=True
  598. data['ShowSelectAzienda'] = False
  599. data['ShowSelectSede'] = False
  600. define = Define(request)
  601. data['admin'] = define.getAdmin()
  602. data['azienda'] = define.getAzienda()
  603. data['AziendaId'] = define.getAziendaId()
  604. data['sede'] = define.getSede()
  605. data['SedeId'] = define.getSedeId()
  606. ### funzioni esterne fine ###
  607. if 'AdminId' in request.session:
  608. data['AdminId'] = request.session['AdminId']
  609. admin = Amministratore.objects.get(pk=data['AdminId'])
  610. data['admin'] = admin
  611. print('admin',admin.id,admin.nome)
  612. data['permessoSEP'] = getAMP(admin)[1]
  613. amministratore = None
  614. if 'AmministratoreEditId' in request.session:
  615. amministratoreEditId = request.session.get('AmministratoreEditId')
  616. try:
  617. amministratore = Amministratore.objects.get(pk=amministratoreEditId)
  618. except Amministratore.DoesNotExist as dne:
  619. return HttpResponseRedirect(reverse("amministratore:edit"))
  620. print('amministratore',amministratore.id,amministratore.login,amministratore.nome)
  621. data['amministratore'] = amministratore
  622. if 'EditSedePermessoId' in request.session:
  623. sede = Sede.objects.get(pk=request.session.get('EditSedePermessoId'))
  624. print('sede',sede.nome)
  625. data['sedeOnWork'] = sede
  626. data['permessoSEP'] = getSEP(sede,amministratore)[1]
  627. print('PermessoSEP',data['permessoSEP'])
  628. if 'paramm' in request.session and request.session['paramm']:
  629. data['DONTSHOWDIRITTI']=True
  630. print('amministratore',amministratore.id,amministratore.login,amministratore.nome)
  631. data['amministratore'] = amministratore
  632. ####################################
  633. listadirittidisponibili= Permesso.objects.filter(Q(classe='SED')|Q(classe='UTE')|Q(classe='DOC'))
  634. # diciamo che fatta cosi' mi pare una pecionata, ma funzionata. magari va ottimizzata un po'
  635. print(type(listadirittidisponibili))
  636. ldd = list()
  637. for i in listadirittidisponibili:
  638. ldd.append(i)
  639. print(type(ldd))
  640. print('*' * 20)
  641. data['listapermessiassegnabili'] = list()
  642. for i in ldd:
  643. if i not in data['permessoSEP']:
  644. data['listapermessiassegnabili'].append(i)
  645. ##########################################
  646. if request.method == 'POST':
  647. print("qualcosa e' stato premuto")
  648. if 'AmministratoreReturnButton' in request.POST:
  649. print("Un tasto è stato premuto 'AmministratoreReturnButton'")
  650. return HttpResponseRedirect(reverse("amministratore:welcome"))
  651. if 'AmministratoreButton' in request.POST:
  652. print("Un tasto è stato premuto 'AmministratoreButton'")
  653. return HttpResponseRedirect(reverse("amministratore:edit"))
  654. if 'AmministratoreAziendaButton' in request.POST:
  655. print("Un tasto è stato premuto 'AmministratoreAziendeButton'")
  656. return HttpResponseRedirect(reverse("amministratore:editAZ"))
  657. if 'AmministratoreSedeButton' in request.POST:
  658. print("Un tasto è stato premuto 'AmministratoreAziendeButton'")
  659. return HttpResponseRedirect(reverse("amministratore:editSE"))
  660. if 'PermessoDaAggiungereButton' in request.POST:
  661. print("Un tasto è stato premuto 'PermessoDaAggiungereButton'")
  662. formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST,permessi=data['listapermessiassegnabili'])
  663. if formpermessodaaggiungere.is_valid():
  664. print('listapermessidaaggiungere',formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere'))
  665. setSEP(sede,amministratore,int(formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere')))
  666. else:
  667. print('errore formpermessodaaggiungere',formpermessodaaggiungere)
  668. if 'ConfermaCancellazionePermesso' in request.POST:
  669. print("Un tasto è stato premuto 'ConfermaCancellazionePermesso'")
  670. delSEP(azienda,amministratore,int(request.POST.get('ConfermaCancellazionePermesso')))
  671. data['permessoSEP'] = getSEP(sede,amministratore)[1]
  672. ####################################
  673. listadirittidisponibili= Permesso.objects.filter(Q(classe='SED')|Q(classe='UTE')|Q(classe='DOC'))
  674. # diciamo che fatta cosi' mi pare una pecionata, ma funzionata. magari va ottimizzata un po'
  675. print(type(listadirittidisponibili))
  676. ldd = list()
  677. for i in listadirittidisponibili:
  678. ldd.append(i)
  679. print(type(ldd))
  680. print('*' * 20)
  681. data['listapermessiassegnabili'] = list()
  682. for i in ldd:
  683. if i not in data['permessoSEP']:
  684. data['listapermessiassegnabili'].append(i)
  685. ##########################################
  686. return render(request,'amministratore.edit.SEP.html',data)
  687. '''
  688. if 'ConfermaCancellazionePermessoXAmministratore' in request.POST:
  689. print("Premuto tasto ConfermaCancellazionePermessoXAmministratore")
  690. formcancellapermessoxamministratore = FormCancellaPermessiXAmministratore(request.POST)
  691. if formcancellapermessoxamministratore.is_valid():
  692. print('Form Valida CancellaPermessoXAmministratore')
  693. permessodarimuovere = formcancellapermessoxamministratore.cleaned_data.get('ConfermaCancellazionePermessoXAmministratore')
  694. print('Permesso da rimuovere',permessodarimuovere)
  695. amp = AMP.objects.get(pk=permessodarimuovere)
  696. amp.delete()
  697. if 'PermessoDaAggiungereButton' in request.POST:
  698. print("Premuto aggiunta permesso")
  699. formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST)
  700. print(formpermessodaaggiungere)
  701. if formpermessodaaggiungere.is_valid():
  702. print("Form permessodaaggiungere valida")
  703. pda = Permesso.objects.get(pk=formpermessodaaggiungere.cleaned_data.get('permessodaaggiungere'))
  704. print('pda',pda.nome)
  705. amp = AMP()
  706. amp.amministratore = amministratore
  707. amp.permesso = pda
  708. amp.save()
  709. data['pane']='Permesso'
  710. if 'AziendaConfermaCancellazionePermesso' in request.POST:
  711. formcancellapermesso = FormCancellaPermessi(request.POST)
  712. if formcancellapermesso.is_valid():
  713. print('form valida formcancellapermesso')
  714. aziendadarimuovere = formcancellapermesso.cleaned_data.get('ConfermaCancellazionePermesso')
  715. print('azienda da rimuovere',aziendadarimuovere)
  716. #prima cosa togliamo i diritti alle sedi
  717. aztorm = None
  718. try:
  719. aztorm = Azienda.objects.get(pk=aziendadarimuovere)
  720. except Azienda.DoesNotExist:
  721. print('Azienda non trovata',aziendadarimuovere)
  722. print('azienda trovata',aztorm.nome)
  723. print("Iniziamo dalle sedi")
  724. sedi = aztorm.sede_set.all()
  725. for tmp in sedi:
  726. print('sede',tmp.nome)
  727. for p in tmp.sep_set.all():
  728. print('permesso',p.permesso.nome)
  729. p.delete()
  730. print("Ora tocca all'azienda")
  731. for p in aztorm.azp_set.all():
  732. print('permesso azienda',p.permesso.nome)
  733. p.delete()
  734. data['pane'] = "Azienda"
  735. listaaziendatutte = Azienda.objects.all()
  736. if amministratore.id:
  737. data['listaazienda'] = listaAZP(amministratore)[0]
  738. data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda']))
  739. else:
  740. data['listaaziendadiff'] = list(set(listaaziendatutte))
  741. if 'AziendaDaAggiungereButton' in request.POST:
  742. formaziendamancante=FormAziendaMancante(request.POST)
  743. formaziendamancante.c(data['listaaziendadiff'])
  744. #print('fam',formaziendamancante)
  745. if formaziendamancante.is_valid():
  746. print('form valida formaziendamancante')
  747. aziendadaaggiungere = formaziendamancante.cleaned_data.get('aziendadaaggiungere')
  748. print('Azienda da aggiungere',aziendadaaggiungere)
  749. aztoadd = None
  750. try:
  751. aztoadd = Azienda.objects.get(pk=aziendadaaggiungere)
  752. except Azienda.DoesNotExist as dne:
  753. print("Azienda non trovata",aziendadaaggiungere)
  754. if aztoadd:
  755. print('Azienda in corso di aggiunta',aztoadd.nome)
  756. azp = AZP()
  757. azp.azienda = aztoadd
  758. azp.amministratore = amministratore
  759. azp.permesso = getPermesso("AZIENDA")
  760. print('permesso base',getPermesso("AZIENDA").nome)
  761. azp.save()
  762. print(azp.id)
  763. data['pane']='Azienda'
  764. if 'AziendaSelect' in request.POST:
  765. print('Richiesta Selezione Azienda')
  766. formaziendaselect = FormAziendaSelect(request.POST)
  767. if formaziendaselect.is_valid():
  768. print('FormAziendaSelect valido')
  769. aziendaselect = formaziendaselect.cleaned_data.get('AziendaSelect')
  770. request.session['aziendaselect'] = aziendaselect
  771. print('aziendaselect',aziendaselect)
  772. # una volta ottenuta l'azienda, selezioniamo le sedi:
  773. # le selezioni sono due:
  774. # 1 lista delle sedi gia' associate all'utente attraverso il permesso(SEP)
  775. # 2 lista delle sedi ancora da assegnare (tolte le sedi gia' assegnate)
  776. data['listasede'] = listaSEP(aziendaselect,amministratore)[0]
  777. data['listasedediff']= list(set(Azienda.objects.get(pk=aziendaselect).sede_set.all()) - set(listaSEP(aziendaselect,amministratore)[0]))
  778. print("lista sede",len(data['listasede']))
  779. data['pane']='Azienda'
  780. if 'SedeConfermaCancellazionePermesso' in request.POST:
  781. print('Richiesta cancellazione Permessi Sede')
  782. if 'SedeDaAggiungereButton' in request.POST:
  783. if 'aziendaselect' in request.session:
  784. aziendaselect = request.session.get('aziendaselect')
  785. print('Richiesta Sede da aggiungere')
  786. data['listasede'] = listaSEP(aziendaselect,amministratore)[0]
  787. data['listasedediff']= list(set(Azienda.objects.get(pk=aziendaselect).sede_set.all()) - set(listaSEP(aziendaselect,amministratore)[0]))
  788. print('listasedediff len',len(data['listasedediff']))
  789. formsedemancante = FormSedeMancante(request.POST,lista=data['listasedediff'])
  790. #formsedemancante.c(data['listasedediff'])
  791. if 'ListaSedeMancante' in request.POST:
  792. print('ListaSedeMancante',request.POST['ListaSedeMancanteSelect'])
  793. if formsedemancante.is_valid():
  794. listasedemancante = formsedemancante.cleaned_data.get('ListaSedeMancanteSelect')
  795. print(listasedemancante)
  796. for lsm in listasedemancante:
  797. setSEP(Sede.objects.get(pk=lsm),amministratore,Permesso.objects.get(nome="SEDE"))
  798. #else: print(formsedemancante)
  799. '''
  800. ### editing amministratore senza ulteriori funzioni ###
  801. def editAmministratore(request):
  802. if not 'AdminId' in request.session:
  803. return HttpResponseRedirect(reverse("login:start"))
  804. ### funzioni esterne ###
  805. d = DataDict()
  806. data = d.getData()
  807. data['NavBar']=True
  808. data['ShowSelectAzienda'] = False
  809. data['ShowSelectSede'] = False
  810. define = Define(request)
  811. data['admin'] = define.getAdmin()
  812. data['azienda'] = define.getAzienda()
  813. data['AziendaId'] = define.getAziendaId()
  814. data['sede'] = define.getSede()
  815. data['SedeId'] = define.getSedeId()
  816. print('cazzo cazzo')
  817. ### funzioni esterne fine ###
  818. if 'AdminId' in request.session:
  819. data['AdminId'] = request.session['AdminId']
  820. admin = Amministratore.objects.get(pk=data['AdminId'])
  821. data['admin'] = admin
  822. print('admin',admin.id,admin.nome)
  823. data['permesso'] = getAMP(admin)[0]
  824. amministratore = data['admin']
  825. print('amministratore',amministratore.id,amministratore.nome)
  826. if request.method == 'POST':
  827. print("qualcosa e' stato premuto")
  828. if 'indietro' in request.POST:
  829. return HttpResponseRedirect(reverse("azienda:welcome"))
  830. if 'AmministratoreDirittiAziendaButton' in request.POST:
  831. print("premuto: 'AmministratoreDirittiAziendaButton'")
  832. return HttpResponseRedirect(reverse("amministratore:editAZ"))
  833. if 'AmministratoreUpdateButton' in request.POST:
  834. formamministratore = FormAmministratore(request.POST)
  835. if formamministratore.is_valid():
  836. print('form valida formamministratore')
  837. amministratore.login=formamministratore.cleaned_data.get('login')
  838. amministratore.nome=formamministratore.cleaned_data.get('nome')
  839. amministratore.mail=formamministratore.cleaned_data.get('mail')
  840. amministratore.pin=formamministratore.cleaned_data.get('pin')
  841. amministratore.save()
  842. print('id amministratore salvato/nuovo',amministratore.id,":",amministratore.nome)
  843. tmp = dict()
  844. tmp['nome'] = amministratore.nome
  845. tmp['login'] = amministratore.login
  846. tmp['pin'] = amministratore.pin
  847. tmp['mail'] = amministratore.mail
  848. data['amministratore'] = FormAmministratore(tmp)
  849. return render(request,'amministratore.edit.html',data)