views.py 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023
  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. print("sede nome",p)
  539. lista = SEP.objects.filter(sede=sede,amministratore=amministratore,permesso=p)
  540. print('lista lista',lista,sede,amministratore,p)
  541. for p in lista:
  542. p.delete()
  543. p = Permesso.objects.get(nome="DOCUMENTO")
  544. lista = SEP.objects.filter(sede=sede,amministratore=amministratore,permesso=p)
  545. print('lista lista',lista)
  546. for p in lista:
  547. p.delete()
  548. p = Permesso.objects.get(nome="UTENTE")
  549. lista = SEP.objects.filter(sede=sede,amministratore=amministratore,permesso=p)
  550. print('lista lista',lista)
  551. for p in lista:
  552. p.delete()
  553. if 'SedeDaAggiungereButton' in request.POST:
  554. print('un tasto è stato premuto SedeDaAggiungereButton')
  555. formsededaaggiungere = FormSedeDaAggiungere(request.POST,sede=data['listasedediff'])
  556. if formsededaaggiungere.is_valid():
  557. print('SedeDaAggiungere, form valida')
  558. sede = formsededaaggiungere.cleaned_data.get('ListaSedeDaAggiungere')
  559. print('id sede da aggiungere',sede)
  560. setSEP(sede,amministratore,'SEDE')
  561. setSEP(sede,amministratore,'UTENTE')
  562. setSEP(sede,amministratore,'DOCUMENTO')
  563. else:
  564. print('SedeDaAggiungere, form non valido')
  565. if 'SedePermessoUpdateButton' in request.POST:
  566. print("Un tasto è stato premuto 'SedePermessoUpdate'")
  567. print(request.POST)
  568. formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST)
  569. formpermessodaaggiungere.c(Permesso.objects.filter(classe="SED"))
  570. if formpermessodaaggiungere.is_valid():
  571. print('formpermessodaaggiungere è valido')
  572. print("cazzo cazzo")
  573. else:
  574. print('errore',formpermessodaaggiungere)
  575. #formpermessoupdate = form.PermessoUpdate(request.POST)
  576. data['listasede'] = listaSEP(azienda,amministratore.id,"SEDE")[0]
  577. data['listasede'].sort(key=lambda x: x.nome,reverse=False)
  578. print("data['listasede']",len(data['listasede']),type(data['listasede']))
  579. listasedetutte = azienda.sede_set.all().order_by('nome')
  580. print('listasedetutte',len(listasedetutte))
  581. data['listasedediff'] = list(set(listasedetutte)-set(data['listasede']))
  582. data['listasedediff'].sort(key=lambda x: x.nome,reverse=False)
  583. #data['listasedediff'] = listasedetutte
  584. print("data['listasedediff']",len(data['listasedediff']))
  585. # parliamo di diritti relativi alle sedi
  586. data['dirittiSEDE'] = Permesso.objects.filter(classe='SED')
  587. print('dirittiSEDE',len(data['dirittiSEDE']))
  588. return render(request,'amministratore.edit.SE.html',data)
  589. def editSEP(request):
  590. ### edit diritti associati all sede.
  591. ### in questa sezione procediamo con l'assegnare o rimuovere i diritti di questo amministratore
  592. ### per le aziende in elenco.
  593. if not 'AdminId' in request.session:
  594. return HttpResponseRedirect(reverse("login:start"))
  595. ### funzioni esterne ###
  596. d = DataDict()
  597. data = d.getData()
  598. data['NavBar']=True
  599. data['ShowSelectAzienda'] = False
  600. data['ShowSelectSede'] = False
  601. define = Define(request)
  602. data['admin'] = define.getAdmin()
  603. data['azienda'] = define.getAzienda()
  604. data['AziendaId'] = define.getAziendaId()
  605. data['sede'] = define.getSede()
  606. data['SedeId'] = define.getSedeId()
  607. ### funzioni esterne fine ###
  608. if 'AdminId' in request.session:
  609. data['AdminId'] = request.session['AdminId']
  610. admin = Amministratore.objects.get(pk=data['AdminId'])
  611. data['admin'] = admin
  612. print('admin',admin.id,admin.nome)
  613. data['permessoSEP'] = getAMP(admin)[1]
  614. amministratore = None
  615. if 'AmministratoreEditId' in request.session:
  616. amministratoreEditId = request.session.get('AmministratoreEditId')
  617. try:
  618. amministratore = Amministratore.objects.get(pk=amministratoreEditId)
  619. except Amministratore.DoesNotExist as dne:
  620. return HttpResponseRedirect(reverse("amministratore:edit"))
  621. print('amministratore',amministratore.id,amministratore.login,amministratore.nome)
  622. data['amministratore'] = amministratore
  623. if 'EditSedePermessoId' in request.session:
  624. sede = Sede.objects.get(pk=request.session.get('EditSedePermessoId'))
  625. print('sede',sede.nome)
  626. data['sedeOnWork'] = sede
  627. data['permessoSEP'] = getSEP(sede,amministratore)[1]
  628. print('PermessoSEP',data['permessoSEP'])
  629. if 'paramm' in request.session and request.session['paramm']:
  630. data['DONTSHOWDIRITTI']=True
  631. print('amministratore',amministratore.id,amministratore.login,amministratore.nome)
  632. data['amministratore'] = amministratore
  633. ####################################
  634. listadirittidisponibili= Permesso.objects.filter(Q(classe='SED')|Q(classe='UTE')|Q(classe='DOC'))
  635. # diciamo che fatta cosi' mi pare una pecionata, ma funzionata. magari va ottimizzata un po'
  636. print(type(listadirittidisponibili))
  637. ldd = list()
  638. for i in listadirittidisponibili:
  639. ldd.append(i)
  640. print(type(ldd))
  641. print('*' * 20)
  642. data['listapermessiassegnabili'] = list()
  643. for i in ldd:
  644. if i not in data['permessoSEP']:
  645. data['listapermessiassegnabili'].append(i)
  646. ##########################################
  647. if request.method == 'POST':
  648. print("qualcosa e' stato premuto")
  649. if 'AmministratoreReturnButton' in request.POST:
  650. print("Un tasto è stato premuto 'AmministratoreReturnButton'")
  651. return HttpResponseRedirect(reverse("amministratore:welcome"))
  652. if 'AmministratoreButton' in request.POST:
  653. print("Un tasto è stato premuto 'AmministratoreButton'")
  654. return HttpResponseRedirect(reverse("amministratore:edit"))
  655. if 'AmministratoreAziendaButton' in request.POST:
  656. print("Un tasto è stato premuto 'AmministratoreAziendeButton'")
  657. return HttpResponseRedirect(reverse("amministratore:editAZ"))
  658. if 'AmministratoreSedeButton' in request.POST:
  659. print("Un tasto è stato premuto 'AmministratoreAziendeButton'")
  660. return HttpResponseRedirect(reverse("amministratore:editSE"))
  661. if 'PermessoDaAggiungereButton' in request.POST:
  662. print("Un tasto è stato premuto 'PermessoDaAggiungereButton'")
  663. formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST,permessi=data['listapermessiassegnabili'])
  664. if formpermessodaaggiungere.is_valid():
  665. print('listapermessidaaggiungere',formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere'))
  666. setSEP(sede,amministratore,int(formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere')))
  667. else:
  668. print('errore formpermessodaaggiungere',formpermessodaaggiungere)
  669. if 'ConfermaCancellazionePermesso' in request.POST:
  670. print("Un tasto è stato premuto 'ConfermaCancellazionePermesso'")
  671. delSEP(azienda,amministratore,int(request.POST.get('ConfermaCancellazionePermesso')))
  672. data['permessoSEP'] = getSEP(sede,amministratore)[1]
  673. ####################################
  674. listadirittidisponibili= Permesso.objects.filter(Q(classe='SED')|Q(classe='UTE')|Q(classe='DOC'))
  675. # diciamo che fatta cosi' mi pare una pecionata, ma funzionata. magari va ottimizzata un po'
  676. print(type(listadirittidisponibili))
  677. ldd = list()
  678. for i in listadirittidisponibili:
  679. ldd.append(i)
  680. print(type(ldd))
  681. print('*' * 20)
  682. data['listapermessiassegnabili'] = list()
  683. for i in ldd:
  684. if i not in data['permessoSEP']:
  685. data['listapermessiassegnabili'].append(i)
  686. ##########################################
  687. return render(request,'amministratore.edit.SEP.html',data)
  688. '''
  689. if 'ConfermaCancellazionePermessoXAmministratore' in request.POST:
  690. print("Premuto tasto ConfermaCancellazionePermessoXAmministratore")
  691. formcancellapermessoxamministratore = FormCancellaPermessiXAmministratore(request.POST)
  692. if formcancellapermessoxamministratore.is_valid():
  693. print('Form Valida CancellaPermessoXAmministratore')
  694. permessodarimuovere = formcancellapermessoxamministratore.cleaned_data.get('ConfermaCancellazionePermessoXAmministratore')
  695. print('Permesso da rimuovere',permessodarimuovere)
  696. amp = AMP.objects.get(pk=permessodarimuovere)
  697. amp.delete()
  698. if 'PermessoDaAggiungereButton' in request.POST:
  699. print("Premuto aggiunta permesso")
  700. formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST)
  701. print(formpermessodaaggiungere)
  702. if formpermessodaaggiungere.is_valid():
  703. print("Form permessodaaggiungere valida")
  704. pda = Permesso.objects.get(pk=formpermessodaaggiungere.cleaned_data.get('permessodaaggiungere'))
  705. print('pda',pda.nome)
  706. amp = AMP()
  707. amp.amministratore = amministratore
  708. amp.permesso = pda
  709. amp.save()
  710. data['pane']='Permesso'
  711. if 'AziendaConfermaCancellazionePermesso' in request.POST:
  712. formcancellapermesso = FormCancellaPermessi(request.POST)
  713. if formcancellapermesso.is_valid():
  714. print('form valida formcancellapermesso')
  715. aziendadarimuovere = formcancellapermesso.cleaned_data.get('ConfermaCancellazionePermesso')
  716. print('azienda da rimuovere',aziendadarimuovere)
  717. #prima cosa togliamo i diritti alle sedi
  718. aztorm = None
  719. try:
  720. aztorm = Azienda.objects.get(pk=aziendadarimuovere)
  721. except Azienda.DoesNotExist:
  722. print('Azienda non trovata',aziendadarimuovere)
  723. print('azienda trovata',aztorm.nome)
  724. print("Iniziamo dalle sedi")
  725. sedi = aztorm.sede_set.all()
  726. for tmp in sedi:
  727. print('sede',tmp.nome)
  728. for p in tmp.sep_set.all():
  729. print('permesso',p.permesso.nome)
  730. p.delete()
  731. print("Ora tocca all'azienda")
  732. for p in aztorm.azp_set.all():
  733. print('permesso azienda',p.permesso.nome)
  734. p.delete()
  735. data['pane'] = "Azienda"
  736. listaaziendatutte = Azienda.objects.all()
  737. if amministratore.id:
  738. data['listaazienda'] = listaAZP(amministratore)[0]
  739. data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda']))
  740. else:
  741. data['listaaziendadiff'] = list(set(listaaziendatutte))
  742. if 'AziendaDaAggiungereButton' in request.POST:
  743. formaziendamancante=FormAziendaMancante(request.POST)
  744. formaziendamancante.c(data['listaaziendadiff'])
  745. #print('fam',formaziendamancante)
  746. if formaziendamancante.is_valid():
  747. print('form valida formaziendamancante')
  748. aziendadaaggiungere = formaziendamancante.cleaned_data.get('aziendadaaggiungere')
  749. print('Azienda da aggiungere',aziendadaaggiungere)
  750. aztoadd = None
  751. try:
  752. aztoadd = Azienda.objects.get(pk=aziendadaaggiungere)
  753. except Azienda.DoesNotExist as dne:
  754. print("Azienda non trovata",aziendadaaggiungere)
  755. if aztoadd:
  756. print('Azienda in corso di aggiunta',aztoadd.nome)
  757. azp = AZP()
  758. azp.azienda = aztoadd
  759. azp.amministratore = amministratore
  760. azp.permesso = getPermesso("AZIENDA")
  761. print('permesso base',getPermesso("AZIENDA").nome)
  762. azp.save()
  763. print(azp.id)
  764. data['pane']='Azienda'
  765. if 'AziendaSelect' in request.POST:
  766. print('Richiesta Selezione Azienda')
  767. formaziendaselect = FormAziendaSelect(request.POST)
  768. if formaziendaselect.is_valid():
  769. print('FormAziendaSelect valido')
  770. aziendaselect = formaziendaselect.cleaned_data.get('AziendaSelect')
  771. request.session['aziendaselect'] = aziendaselect
  772. print('aziendaselect',aziendaselect)
  773. # una volta ottenuta l'azienda, selezioniamo le sedi:
  774. # le selezioni sono due:
  775. # 1 lista delle sedi gia' associate all'utente attraverso il permesso(SEP)
  776. # 2 lista delle sedi ancora da assegnare (tolte le sedi gia' assegnate)
  777. data['listasede'] = listaSEP(aziendaselect,amministratore)[0]
  778. data['listasedediff']= list(set(Azienda.objects.get(pk=aziendaselect).sede_set.all()) - set(listaSEP(aziendaselect,amministratore)[0]))
  779. print("lista sede",len(data['listasede']))
  780. data['pane']='Azienda'
  781. if 'SedeConfermaCancellazionePermesso' in request.POST:
  782. print('Richiesta cancellazione Permessi Sede')
  783. if 'SedeDaAggiungereButton' in request.POST:
  784. if 'aziendaselect' in request.session:
  785. aziendaselect = request.session.get('aziendaselect')
  786. print('Richiesta Sede da aggiungere')
  787. data['listasede'] = listaSEP(aziendaselect,amministratore)[0]
  788. data['listasedediff']= list(set(Azienda.objects.get(pk=aziendaselect).sede_set.all()) - set(listaSEP(aziendaselect,amministratore)[0]))
  789. print('listasedediff len',len(data['listasedediff']))
  790. formsedemancante = FormSedeMancante(request.POST,lista=data['listasedediff'])
  791. #formsedemancante.c(data['listasedediff'])
  792. if 'ListaSedeMancante' in request.POST:
  793. print('ListaSedeMancante',request.POST['ListaSedeMancanteSelect'])
  794. if formsedemancante.is_valid():
  795. listasedemancante = formsedemancante.cleaned_data.get('ListaSedeMancanteSelect')
  796. print(listasedemancante)
  797. for lsm in listasedemancante:
  798. setSEP(Sede.objects.get(pk=lsm),amministratore,Permesso.objects.get(nome="SEDE"))
  799. #else: print(formsedemancante)
  800. '''
  801. ### editing amministratore senza ulteriori funzioni ###
  802. def editAmministratore(request):
  803. if not 'AdminId' in request.session:
  804. return HttpResponseRedirect(reverse("login:start"))
  805. ### funzioni esterne ###
  806. d = DataDict()
  807. data = d.getData()
  808. data['NavBar']=True
  809. data['ShowSelectAzienda'] = False
  810. data['ShowSelectSede'] = False
  811. define = Define(request)
  812. data['admin'] = define.getAdmin()
  813. data['azienda'] = define.getAzienda()
  814. data['AziendaId'] = define.getAziendaId()
  815. data['sede'] = define.getSede()
  816. data['SedeId'] = define.getSedeId()
  817. print('cazzo cazzo')
  818. ### funzioni esterne fine ###
  819. if 'AdminId' in request.session:
  820. data['AdminId'] = request.session['AdminId']
  821. admin = Amministratore.objects.get(pk=data['AdminId'])
  822. data['admin'] = admin
  823. print('admin',admin.id,admin.nome)
  824. data['permesso'] = getAMP(admin)[0]
  825. amministratore = data['admin']
  826. print('amministratore',amministratore.id,amministratore.nome)
  827. if request.method == 'POST':
  828. print("qualcosa e' stato premuto")
  829. if 'indietro' in request.POST:
  830. return HttpResponseRedirect(reverse("azienda:welcome"))
  831. if 'AmministratoreDirittiAziendaButton' in request.POST:
  832. print("premuto: 'AmministratoreDirittiAziendaButton'")
  833. return HttpResponseRedirect(reverse("amministratore:editAZ"))
  834. if 'AmministratoreUpdateButton' in request.POST:
  835. formamministratore = FormAmministratore(request.POST)
  836. if formamministratore.is_valid():
  837. print('form valida formamministratore')
  838. amministratore.login=formamministratore.cleaned_data.get('login')
  839. amministratore.nome=formamministratore.cleaned_data.get('nome')
  840. amministratore.mail=formamministratore.cleaned_data.get('mail')
  841. amministratore.pin=formamministratore.cleaned_data.get('pin')
  842. amministratore.save()
  843. print('id amministratore salvato/nuovo',amministratore.id,":",amministratore.nome)
  844. tmp = dict()
  845. tmp['nome'] = amministratore.nome
  846. tmp['login'] = amministratore.login
  847. tmp['pin'] = amministratore.pin
  848. tmp['mail'] = amministratore.mail
  849. data['amministratore'] = FormAmministratore(tmp)
  850. return render(request,'amministratore.edit.html',data)