|
|
@@ -7,19 +7,77 @@ from att.views import *
|
|
|
from config.views import *
|
|
|
from django.db import IntegrityError
|
|
|
|
|
|
-# riporta tutti i permessi mixando i tre livelli
|
|
|
-def getP(azienda=None,sede=None,amministratore=None):
|
|
|
- if isinstance(jolly,Azienda):
|
|
|
- pass
|
|
|
+def getP(azienda=None,sede=None,amministratore=None,permesso=None):
|
|
|
+ '''
|
|
|
+ getP: ritorna una lista con i permessi assegnati a tutti i livelli possibili
|
|
|
+ '''
|
|
|
+ print('getP',azienda,sede,amministratore,permesso)
|
|
|
+
|
|
|
+ sed = None
|
|
|
+ if isinstance(sede,Sede):
|
|
|
+ print('Sede: instanza Sede')
|
|
|
+ sed = sede
|
|
|
+ elif isinstance(sede,int):
|
|
|
+ print('Sede: istanza int')
|
|
|
+ try:
|
|
|
+ sed = Sede.objects.get(pk=sede)
|
|
|
+ except Sede.DoesNotExist as dne:
|
|
|
+ print('Sed: errore sed non valido')
|
|
|
+
|
|
|
+ per = None
|
|
|
+ if isinstance(permesso,Permesso):
|
|
|
+ print('Permesso: instanza Permesso')
|
|
|
+ per = permesso
|
|
|
+ elif isinstance(permesso,int):
|
|
|
+ print('Permesso: istanza int')
|
|
|
+ per = Permesso.objects.get(pk=permesso)
|
|
|
+
|
|
|
+ amm=None
|
|
|
+ if isinstance(amministratore,Amministratore):
|
|
|
+ print('si tratta di una istanza, quindi possiamo direttamente accedere')
|
|
|
+ amm = amministratore
|
|
|
+ elif isinstance(amministratore,int):
|
|
|
+ print('si tratta di un int, quindi dobbiamo cercare il valore')
|
|
|
+ amm = Amministratore.objects.get(pk=amministratore)
|
|
|
|
|
|
+ azi = None
|
|
|
+ if isinstance(azienda,Azienda):
|
|
|
+ print('azienda: azienda')
|
|
|
+ azi=azienda
|
|
|
+ print(azi.id)
|
|
|
+ if not azi.id:
|
|
|
+ azi=None
|
|
|
+ elif isinstance(azienda,int):
|
|
|
+ print('azienda: int')
|
|
|
+ azi = Azienda.objects.get(pk=azienda)
|
|
|
+ else:
|
|
|
+ azi = None
|
|
|
+
|
|
|
+ ### permessi inizio ###
|
|
|
+ data = list()
|
|
|
+ data = getAMP(amm)[0]
|
|
|
+ print("******",data)
|
|
|
+ if azi:
|
|
|
+ print('**** azienda presente ****')
|
|
|
+ for t in getAZP(azi,amm)[0]:
|
|
|
+ if t not in data:
|
|
|
+ data.append(t)
|
|
|
+ if sed:
|
|
|
+ print('**** sede presente ****')
|
|
|
+ for t in getSEP(sed,amm):
|
|
|
+ if t not in data:
|
|
|
+ data.append(t)
|
|
|
+ print("getP Permessi:",data)
|
|
|
+ return data
|
|
|
+
|
|
|
# riporta l'elenco dei permessi per amministratore
|
|
|
def getAMP(amministratore=None):
|
|
|
+ print("getAMP",amministratore)
|
|
|
amm=None
|
|
|
- print('getAMP',amministratore)
|
|
|
if isinstance(amministratore,Amministratore):
|
|
|
print('si tratta di una istanza, quindi possiamo direttamente accedere')
|
|
|
amm = amministratore
|
|
|
- if isinstance(amministratore,int):
|
|
|
+ elif isinstance(amministratore,int):
|
|
|
print('si tratta di un int, quindi dobbiamo cercare il valore')
|
|
|
amm = Amministratore.objects.get(pk=amministratore)
|
|
|
|
|
|
@@ -47,7 +105,6 @@ def getAZP(azienda=None,amministratore=None):
|
|
|
print(azi.id)
|
|
|
if not azi.id:
|
|
|
azi=None
|
|
|
-
|
|
|
elif isinstance(azienda,int):
|
|
|
print('azienda: int')
|
|
|
azi = Azienda.objects.get(pk=azienda)
|
|
|
@@ -82,29 +139,6 @@ def getAZP(azienda=None,amministratore=None):
|
|
|
#for i in permessi: print(i,)
|
|
|
return (permessi,oggettoPermesso,oggettoAZP)
|
|
|
|
|
|
-'''
|
|
|
-# riporta l'elenco dei permessi per amministratore versione oggetto (adatta all'editing)
|
|
|
-def listaAMP(amministratore=None):
|
|
|
- amm=None
|
|
|
- print('listaAMP',amministratore)
|
|
|
- if isinstance(amministratore,Amministratore):
|
|
|
- print('si tratta di una istanza, quindi possiamo direttamente accedere')
|
|
|
- amm = amministratore
|
|
|
- if isinstance(amministratore,int):
|
|
|
- print('si tratta di un int, quindi dobbiamo cercare il valore')
|
|
|
- amm = Amministratore.objects.get(pk=amministratore)
|
|
|
-
|
|
|
- permessi = list()
|
|
|
- oggetto = list()
|
|
|
- for p in amm.amp_set.all():
|
|
|
- permessi.append(p.permesso)
|
|
|
- oggetto.append(p)
|
|
|
-
|
|
|
- print('permessi disponibili',len(permessi))
|
|
|
- #for i in permessi: print(i,)
|
|
|
- return (permessi,oggetto)
|
|
|
-'''
|
|
|
-
|
|
|
#ottiene la lista degli amministratori per azienda
|
|
|
def listaAMMperAzienda(azienda=None,permesso=None):
|
|
|
|
|
|
@@ -153,12 +187,13 @@ def listaAMMperAzienda(azienda=None,permesso=None):
|
|
|
|
|
|
#ottiene la lista degli amministratori per sede
|
|
|
def listaAMMperSede(sede=None,permesso=None):
|
|
|
-
|
|
|
+ print("listaAMMperSede",sede,permesso)
|
|
|
+
|
|
|
sed = None
|
|
|
if isinstance(sede,Sede):
|
|
|
print('Sede: instanza Sede')
|
|
|
sed = sede
|
|
|
- if isinstance(sede,int):
|
|
|
+ elif isinstance(sede,int):
|
|
|
print('Sede: istanza int')
|
|
|
try:
|
|
|
sed = Sede.objects.get(pk=sede)
|
|
|
@@ -169,8 +204,7 @@ def listaAMMperSede(sede=None,permesso=None):
|
|
|
if isinstance(permesso,Permesso):
|
|
|
print('Permesso: instanza Permesso')
|
|
|
per = permesso
|
|
|
-
|
|
|
- if isinstance(permesso,int):
|
|
|
+ elif isinstance(permesso,int):
|
|
|
print('Permesso: istanza int')
|
|
|
per = Permesso.objects.get(pk=permesso)
|
|
|
|
|
|
@@ -244,7 +278,7 @@ def listaSEP(azienda=None,amministratore=None,permesso=None):
|
|
|
if isinstance(azienda,Azienda):
|
|
|
print('Azienda: instanza Azienda')
|
|
|
azi = azienda
|
|
|
- if isinstance(azienda,int):
|
|
|
+ elif isinstance(azienda,int):
|
|
|
print('Azienda: istanza int')
|
|
|
azi = Azienda.objects.get(pk=azienda)
|
|
|
|
|
|
@@ -252,7 +286,7 @@ def listaSEP(azienda=None,amministratore=None,permesso=None):
|
|
|
if isinstance(amministratore,Amministratore):
|
|
|
print('amministratore: instanza Amministratore')
|
|
|
amm = amministratore
|
|
|
- if isinstance(amministratore,int):
|
|
|
+ elif isinstance(amministratore,int):
|
|
|
print('amministratore: istanza int')
|
|
|
amm = Amministratore.objects.get(pk=amministratore)
|
|
|
|
|
|
@@ -261,10 +295,10 @@ def listaSEP(azienda=None,amministratore=None,permesso=None):
|
|
|
if isinstance(permesso,Permesso):
|
|
|
print('si tratta di una istanza, possiamo passarla direttamente')
|
|
|
per = permesso
|
|
|
- if isinstance(permesso,int):
|
|
|
+ elif isinstance(permesso,int):
|
|
|
print('si tratta di un int, quindi dobbiamo cercare il valore')
|
|
|
per = Permesso.objects.get(pk=permesso)
|
|
|
- if isinstance(permesso,str):
|
|
|
+ elif isinstance(permesso,str):
|
|
|
print('si tratta di una str, quindi dobbiamo cercare il valore')
|
|
|
per = Permesso.objects.get(nome=permesso)
|
|
|
|
|
|
@@ -276,6 +310,9 @@ def listaSEP(azienda=None,amministratore=None,permesso=None):
|
|
|
print('problema con la definizione di azienda')
|
|
|
return []
|
|
|
|
|
|
+ # ottiene l'elenco dei permessi gia' assegnati per l'amministratore
|
|
|
+ permessi_assegnati=getP(amministratore=amm,azienda=azi)
|
|
|
+
|
|
|
print('dati rilevati',amm.id,amm.login)
|
|
|
|
|
|
# devo ottenere la lista delle sedi, filtrate per azienda autorizzate per amministratore
|
|
|
@@ -287,17 +324,25 @@ def listaSEP(azienda=None,amministratore=None,permesso=None):
|
|
|
print("sedix len",len(sedix))
|
|
|
lam = list()
|
|
|
|
|
|
- for s in sedix:
|
|
|
- tmp = SEP.objects.filter(sede=s).filter(amministratore=amm).filter(permesso=per)
|
|
|
- #print(len(tmp))
|
|
|
- for n in tmp:
|
|
|
- lam.append(n)
|
|
|
-
|
|
|
+ if per.nome not in permessi_assegnati:
|
|
|
+ for s in sedix:
|
|
|
+ tmp = SEP.objects.filter(sede=s).filter(amministratore=amm).filter(permesso=per)
|
|
|
+ #print(len(tmp))
|
|
|
+ for n in tmp:
|
|
|
+ lam.append(n)
|
|
|
+ else:
|
|
|
+ #abbiamo un diritto di livello superiore
|
|
|
+ tmp = list()
|
|
|
+ for s in sedix:
|
|
|
+ print(s,per.nome)
|
|
|
+ tmp.append({'sede':s,'permesso':per},)
|
|
|
+ lam = tmp
|
|
|
print("lam",len(lam))
|
|
|
+ print(lam)
|
|
|
|
|
|
for p in lam:
|
|
|
- #print(p,type(p),p.sede)
|
|
|
- sedi.append(p.sede)
|
|
|
+ print(p,type(p),p)
|
|
|
+ sedi.append(p.permesso)
|
|
|
oggetto.append(p)
|
|
|
|
|
|
sedi = sorted(sedi, key = lambda x: x.nome,reverse=False)
|