views.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  1. from django.shortcuts import render
  2. # Create your views here.
  3. from django.shortcuts import render
  4. from .models import *
  5. from att.views import *
  6. from config.views import *
  7. from django.db import IntegrityError
  8. # riporta tutti i permessi mixando i tre livelli
  9. def getP(azienda=None,sede=None,amministratore=None):
  10. if isinstance(jolly,Azienda):
  11. pass
  12. # riporta l'elenco dei permessi per amministratore
  13. def getAMP(amministratore=None):
  14. amm=None
  15. print('getAMP',amministratore)
  16. if isinstance(amministratore,Amministratore):
  17. print('si tratta di una istanza, quindi possiamo direttamente accedere')
  18. amm = amministratore
  19. if isinstance(amministratore,int):
  20. print('si tratta di un int, quindi dobbiamo cercare il valore')
  21. amm = Amministratore.objects.get(pk=amministratore)
  22. permessi = list()
  23. oggettoPermesso = list()
  24. oggettoAMM = list()
  25. for p in amm.amp_set.all():
  26. permessi.append(p.permesso.nome)
  27. oggettoPermesso.append(p.permesso)
  28. oggettoAMM.append(p)
  29. print('permessi disponibili',len(permessi))
  30. #for i in permessi: print(i,)
  31. return (permessi,oggettoPermesso,oggettoAMM)
  32. #riporta l'elenco dei permessi per azienda, filtrato per amministratore
  33. def getAZP(azienda=None,amministratore=None):
  34. print('getAZP',azienda,amministratore)
  35. azi = None
  36. if isinstance(azienda,Azienda):
  37. print('azienda: azienda')
  38. azi=azienda
  39. print(azi.id)
  40. if not azi.id:
  41. azi=None
  42. elif isinstance(azienda,int):
  43. print('azienda: int')
  44. azi = Azienda.objects.get(pk=azienda)
  45. else:
  46. azi = None
  47. amm=None
  48. if isinstance(amministratore,Amministratore):
  49. print('amministratore: amministratore')
  50. amm = amministratore
  51. elif isinstance(amministratore,int):
  52. print('amministratore: int')
  53. amm = Amministratore.objects.get(pk=amministratore)
  54. else:
  55. amm = None
  56. if not amm:
  57. return ([],[],[],)
  58. if not azi:
  59. return ([],[],[],)
  60. permessi = list()
  61. oggettoPermesso = list()
  62. oggettoAZP = list()
  63. for p in azi.azp_set.all().filter(amministratore=amm):
  64. permessi.append(p.permesso.nome)
  65. oggettoPermesso.append(p.permesso)
  66. oggettoAZP.append(p)
  67. print('permessi disponibili',len(permessi))
  68. #for i in permessi: print(i,)
  69. return (permessi,oggettoPermesso,oggettoAZP)
  70. '''
  71. # riporta l'elenco dei permessi per amministratore versione oggetto (adatta all'editing)
  72. def listaAMP(amministratore=None):
  73. amm=None
  74. print('listaAMP',amministratore)
  75. if isinstance(amministratore,Amministratore):
  76. print('si tratta di una istanza, quindi possiamo direttamente accedere')
  77. amm = amministratore
  78. if isinstance(amministratore,int):
  79. print('si tratta di un int, quindi dobbiamo cercare il valore')
  80. amm = Amministratore.objects.get(pk=amministratore)
  81. permessi = list()
  82. oggetto = list()
  83. for p in amm.amp_set.all():
  84. permessi.append(p.permesso)
  85. oggetto.append(p)
  86. print('permessi disponibili',len(permessi))
  87. #for i in permessi: print(i,)
  88. return (permessi,oggetto)
  89. '''
  90. #ottiene la lista degli amministratori per azienda
  91. def listaAMMperAzienda(azienda=None,permesso=None):
  92. azi = None
  93. if isinstance(azienda,Azienda):
  94. print('Azienda: instanza Azienda')
  95. azi = azienda
  96. if isinstance(azienda,int):
  97. print('Azienda: istanza int')
  98. azi = Azienda.objects.get(pk=azienda)
  99. per = None
  100. if isinstance(permesso,Permesso):
  101. print('Permesso: instanza Permesso')
  102. per = permesso
  103. if isinstance(permesso,int):
  104. print('Permesso: istanza int')
  105. per = Permesso.objects.get(pk=permesso)
  106. if not azi:
  107. print('problema con la definizione di azienda')
  108. return []
  109. print('dati rilevati',azi.id,azi.nome)
  110. laz = list()
  111. if not per: #tutti i permessi
  112. p = Permesso.objects.all()
  113. for tmp in p:
  114. t = azi.azp_set.filter(permesso__nome=tmp.nome)
  115. for tmp2 in t:
  116. laz.append(tmp2)
  117. else:
  118. t = azi.azp_set.filter(permesso__nome=per_nome)
  119. for tmp in t:
  120. laz.append(tmp)
  121. amministratore = list()
  122. oggetto = list()
  123. for p in laz:
  124. amministratore.append(p.amministratore)
  125. oggetto.append(p)
  126. print('amministratori disponibili',len(amministratore))
  127. return (amministratore,oggetto)
  128. #ottiene la lista degli amministratori per sede
  129. def listaAMMperSede(sede=None,permesso=None):
  130. sed = None
  131. if isinstance(sede,Sede):
  132. print('Sede: instanza Sede')
  133. sed = sede
  134. if isinstance(sede,int):
  135. print('Sede: istanza int')
  136. try:
  137. sed = Sede.objects.get(pk=sede)
  138. except Sede.DoesNotExist as dne:
  139. print('Sed: errore sed non valido')
  140. per = None
  141. if isinstance(permesso,Permesso):
  142. print('Permesso: instanza Permesso')
  143. per = permesso
  144. if isinstance(permesso,int):
  145. print('Permesso: istanza int')
  146. per = Permesso.objects.get(pk=permesso)
  147. if not sed:
  148. print('problema con la definizione di sede')
  149. return ([],[],)
  150. print('dati rilevati',sed.id,sed.nome)
  151. lse = list()
  152. if not per: #tutti i permessi
  153. p = Permesso.objects.all()
  154. for tmp in p:
  155. t = sed.sep_set.filter(permesso__nome=tmp.nome)
  156. for tmp2 in t:
  157. lse.append(tmp2)
  158. else:
  159. t = sed.sep_set.filter(permesso__nome=per_nome)
  160. for tmp in t:
  161. lse.append(tmp)
  162. print('lunghezza LAZ parametro indicato',lse)
  163. amministratore = list()
  164. oggetto = list()
  165. for p in lse:
  166. print(p.amministratore.nome)
  167. amministratore.append(p.amministratore)
  168. oggetto.append(p)
  169. print('amministratori disponibili',len(amministratore))
  170. return (amministratore,oggetto)
  171. #riporta la lista delle aziende in base all'amministratore
  172. def listaAZP(amministratore=None):
  173. print('Parametro amministratore',amministratore,type(amministratore))
  174. amm = None
  175. if isinstance(amministratore,Amministratore):
  176. print('amministratore: instanza Amministratore')
  177. amm=amministratore
  178. if isinstance(amministratore,int):
  179. print('amministratore: istanza int')
  180. amm = Amministratore.objects.get(pk=amministratore)
  181. if amm == None:
  182. print('problema con la definizione di amministratore')
  183. return []
  184. print('dati rilevati',amm.id,amm.login)
  185. lam = amm.azp_set.filter(permesso__nome="AZIENDA")
  186. print('lunghezza LAM',len(lam))
  187. aziende = list()
  188. oggetto = list()
  189. for p in lam:
  190. aziende.append(p.azienda)
  191. oggetto.append(p)
  192. # prima di restituire mettiamo in ordine
  193. aziende = sorted(aziende, key = lambda x: x.nome,reverse=False)
  194. print('aziende disponibili',len(aziende))
  195. return (aziende,oggetto)
  196. # ritorna la lista delle sedi per azienda e amministratore
  197. def listaSEP(azienda=None,amministratore=None,permesso=None):
  198. print("listaSEP",azienda,amministratore)
  199. azi = None
  200. if isinstance(azienda,Azienda):
  201. print('Azienda: instanza Azienda')
  202. azi = azienda
  203. if isinstance(azienda,int):
  204. print('Azienda: istanza int')
  205. azi = Azienda.objects.get(pk=azienda)
  206. amm = None
  207. if isinstance(amministratore,Amministratore):
  208. print('amministratore: instanza Amministratore')
  209. amm = amministratore
  210. if isinstance(amministratore,int):
  211. print('amministratore: istanza int')
  212. amm = Amministratore.objects.get(pk=amministratore)
  213. per=None
  214. print('listaSEP',permesso)
  215. if isinstance(permesso,Permesso):
  216. print('si tratta di una istanza, possiamo passarla direttamente')
  217. per = permesso
  218. if isinstance(permesso,int):
  219. print('si tratta di un int, quindi dobbiamo cercare il valore')
  220. per = Permesso.objects.get(pk=permesso)
  221. if isinstance(permesso,str):
  222. print('si tratta di una str, quindi dobbiamo cercare il valore')
  223. per = Permesso.objects.get(nome=permesso)
  224. print(amm,azi)
  225. if not amm:
  226. print('problema con la definizione di amministratore')
  227. return []
  228. if not azi:
  229. print('problema con la definizione di azienda')
  230. return []
  231. print('dati rilevati',amm.id,amm.login)
  232. # devo ottenere la lista delle sedi, filtrate per azienda autorizzate per amministratore
  233. sedi = list()
  234. oggetto = list()
  235. sedix = azi.sede_set.all()
  236. print("sedix len",len(sedix))
  237. lam = list()
  238. for s in sedix:
  239. tmp = SEP.objects.filter(sede=s).filter(amministratore=amm).filter(permesso=per)
  240. #print(len(tmp))
  241. for n in tmp:
  242. lam.append(n)
  243. print("lam",len(lam))
  244. for p in lam:
  245. #print(p,type(p),p.sede)
  246. sedi.append(p.sede)
  247. oggetto.append(p)
  248. sedi = sorted(sedi, key = lambda x: x.nome,reverse=False)
  249. print('sedi disponibili',len(sedi))
  250. return (sedi,oggetto)
  251. #riporta l'elenco dei permessi per sede filtrato per amministratore
  252. def getSEP(sede=None,amministratore=None):
  253. print('getSEP',sede,amministratore)
  254. sed=None
  255. if isinstance(sede,Sede):
  256. print('si tratta di una istanza dede')
  257. sed=sede
  258. if isinstance(sede,int):
  259. print('sede: istanza int')
  260. sed = Sede.objects.get(pk=sede)
  261. amm=None
  262. if isinstance(amministratore,Amministratore):
  263. print('si tratta di una istanza amministratore, quindi possiamo direttamente accedere')
  264. amm = amministratore
  265. if isinstance(amministratore,int):
  266. print('si tratta di un int, quindi dobbiamo cercare il valore')
  267. amm = Amministratore.objects.get(pk=amministratore)
  268. if not sed:
  269. return []
  270. permessi = list()
  271. for p in sed.sep_set.all().filter(amministratore=amm):
  272. permessi.append(p.permesso.nome)
  273. print('permessi disponibili',len(permessi))
  274. #for i in permessi: print(i,)
  275. return permessi
  276. # riporta un permesso (generico) o tutti i permessi
  277. def getPermesso(permesso=None):
  278. if permesso:
  279. try:
  280. p = Permesso.objects.get(nome=permesso)
  281. except Permesso.DoesNotExist as dne:
  282. p = None
  283. print("Errore:",dne)
  284. else:
  285. p = Permesso.objects.all()
  286. return p
  287. # da questa parte si impostano i permessi
  288. def setDefault(amministratore=None):
  289. pass
  290. def setAMP(amministratore=None,permesso=None):
  291. amm=None
  292. print('getAMP',amministratore)
  293. if isinstance(amministratore,Amministratore):
  294. print('si tratta di una istanza, quindi possiamo direttamente accedere')
  295. amm = amministratore
  296. if isinstance(amministratore,int):
  297. print('si tratta di un int, quindi dobbiamo cercare il valore')
  298. amm = Amministratore.objects.get(pk=amministratore)
  299. per=None
  300. print('getAMP',permesso)
  301. if isinstance(permesso,Permesso):
  302. print('si tratta di una istanza, possiamo passarla direttamente')
  303. per = permesso
  304. if isinstance(permesso,int):
  305. print('si tratta di un int, quindi dobbiamo cercare il valore')
  306. per = Permesso.objects.get(pk=permesso)
  307. if isinstance(permesso,str):
  308. print('si tratta di una str, quindi dobbiamo cercare il valore')
  309. per = Permesso.objects.get(nome=permesso)
  310. # aggiungiamo il permesso necessario
  311. p = AMP()
  312. p.permesso=per
  313. p.amministratore=amm
  314. try:
  315. p.save()
  316. except IntegrityError as ie:
  317. print(ie)
  318. return [p,]
  319. def setAZP(azienda=None,amministratore=None,permesso=None):
  320. print('setAZP:',azienda,amministratore,permesso)
  321. azi = None
  322. if isinstance(azienda,Azienda):
  323. print('azienda: istanza')
  324. azi=azienda
  325. if isinstance(azienda,int):
  326. print('azienda: int')
  327. azi = Azienda.objects.get(pk=azienda)
  328. amm=None
  329. if isinstance(amministratore,Amministratore):
  330. print('amministratore: istanza')
  331. amm = amministratore
  332. if isinstance(amministratore,str):
  333. try:
  334. amministratore = int(amministratore)
  335. except ValueError as ve:
  336. print(ve)
  337. if isinstance(amministratore,int):
  338. print('si tratta di un int, quindi dobbiamo cercare il valore')
  339. amm = Amministratore.objects.get(pk=amministratore)
  340. per=None
  341. if isinstance(permesso,Permesso):
  342. print('permesso: istanza')
  343. per = permesso
  344. if isinstance(permesso,int):
  345. print('permesso: int')
  346. per = Permesso.objects.get(pk=permesso)
  347. if isinstance(permesso,str):
  348. print('permesso: str')
  349. per = Permesso.objects.get(nome=permesso)
  350. if not azi: print("Errore opzione azi")
  351. if not amm: print("Errore opzione amm")
  352. if not per: print("Errore opzione per")
  353. # aggiungiamo il permesso necessario
  354. print('in fase di salvataggio',azi,amm,per)
  355. p = AZP()
  356. p.permesso=per
  357. p.amministratore=amm
  358. p.azienda=azi
  359. try:
  360. p.save()
  361. except IntegrityError as ie:
  362. print(ie)
  363. return [p,]
  364. # set Permessi Sede
  365. def setSEP(sede=None,amministratore=None,permesso=None):
  366. sed=None
  367. if isinstance(sede,Sede):
  368. print('si tratta di una istanza dede')
  369. sed=sede
  370. if isinstance(sede,int):
  371. print('sede: istanza int')
  372. sed = Sede.objects.get(pk=sede)
  373. amm=None
  374. if isinstance(amministratore,Amministratore):
  375. print('si tratta di una istanza, quindi possiamo direttamente accedere')
  376. amm = amministratore
  377. if isinstance(amministratore,str):
  378. print("Amministratore: str")
  379. amministratore = int(amministratore)
  380. if isinstance(amministratore,int):
  381. print('Amministratore: int')
  382. amm = Amministratore.objects.get(pk=amministratore)
  383. per=None
  384. if isinstance(permesso,Permesso):
  385. print('si tratta di una istanza, possiamo passarla direttamente')
  386. per = permesso
  387. if isinstance(permesso,int):
  388. print('si tratta di un int, quindi dobbiamo cercare il valore')
  389. per = Permesso.objects.get(pk=permesso)
  390. if isinstance(permesso,str):
  391. print('si tratta di una str, quindi dobbiamo cercare il valore')
  392. per = Permesso.objects.get(nome=permesso)
  393. if not sed: print("Errore opzione sed")
  394. if not amm: print("Errore opzione amm")
  395. if not per: print("Errore opzione per")
  396. # aggiungiamo il permesso necessario
  397. p = SEP()
  398. p.permesso=per
  399. p.amministratore=amm
  400. p.sede=sed
  401. try:
  402. p.save()
  403. except IntegrityError as ie:
  404. print(ie)
  405. return [p,]