views.py 13 KB

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