| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548 |
- from django.shortcuts import render
- from .models import *
- from att.views import *
- from config.views import *
- from django.db import IntegrityError
- # getP: ritorna una lista con i permessi assegnati a tutti i livelli possibili
- def getP(azienda=None,sede=None,amministratore=None,permesso=None):
- 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
-
- # getAMP: riporta l'elenco dei permessi per amministratore
- def getAMP(amministratore=None):
- print("getAMP",amministratore)
- 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)
- permessi = list()
- oggettoPermesso = list()
- oggettoAMM = list()
- for p in amm.amp_set.all():
- permessi.append(p.permesso.nome)
- oggettoPermesso.append(p.permesso)
- oggettoAMM.append(p)
- print('permessi disponibili',len(permessi))
- #for i in permessi: print(i,)
- return (permessi,oggettoPermesso,oggettoAMM)
- # getAZP: riporta l'elenco dei permessi per azienda, filtrato per amministratore
- def getAZP(azienda=None,amministratore=None):
- print('getAZP',azienda,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
- amm=None
- if isinstance(amministratore,Amministratore):
- print('amministratore: amministratore')
- amm = amministratore
- elif isinstance(amministratore,int):
- print('amministratore: int')
- amm = Amministratore.objects.get(pk=amministratore)
- else:
- amm = None
- if not amm:
- return ([],[],[],)
- if not azi:
- return ([],[],[],)
- permessi = list()
- oggettoPermesso = list()
- oggettoAZP = list()
- for p in azi.azp_set.all().filter(amministratore=amm):
- permessi.append(p.permesso.nome)
- oggettoPermesso.append(p.permesso)
- oggettoAZP.append(p)
- print('permessi disponibili',len(permessi))
- #for i in permessi: print(i,)
- return (permessi,oggettoPermesso,oggettoAZP)
- # listaAMMperAzienda: ottiene la lista degli amministratori per azienda
- def listaAMMperAzienda(azienda=None,permesso=None):
- azi = None
- if isinstance(azienda,Azienda):
- print('Azienda: instanza Azienda')
- azi = azienda
- if isinstance(azienda,int):
- print('Azienda: istanza int')
- azi = Azienda.objects.get(pk=azienda)
- per = None
- if isinstance(permesso,Permesso):
- print('Permesso: instanza Permesso')
- per = permesso
- if isinstance(permesso,int):
- print('Permesso: istanza int')
- per = Permesso.objects.get(pk=permesso)
- if not azi:
- print('problema con la definizione di azienda')
- return []
- print('dati rilevati',azi.id,azi.nome)
- laz = list()
- if not per: #tutti i permessi
- p = Permesso.objects.all()
- for tmp in p:
- t = azi.azp_set.filter(permesso__nome=tmp.nome)
- for tmp2 in t:
- laz.append(tmp2)
- else:
- t = azi.azp_set.filter(permesso__nome=per_nome)
- for tmp in t:
- laz.append(tmp)
- amministratore = list()
- oggetto = list()
- for p in laz:
- amministratore.append(p.amministratore)
- oggetto.append(p)
- print('amministratori disponibili',len(amministratore))
- return (amministratore,oggetto)
- # listaAMMperSede: 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
- 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)
- if not sed:
- print('problema con la definizione di sede')
- return ([],[],)
- print('dati rilevati',sed.id,sed.nome)
- lse = list()
- if not per: #tutti i permessi
- p = Permesso.objects.all()
- for tmp in p:
- t = sed.sep_set.filter(permesso__nome=tmp.nome)
- for tmp2 in t:
- lse.append(tmp2)
- else:
- t = sed.sep_set.filter(permesso__nome=per_nome)
- for tmp in t:
- lse.append(tmp)
- print('lunghezza LSE',len(lse))
- amministratore = list()
- oggetto = list()
- for p in lse:
- #print(p.amministratore.nome)
- amministratore.append(p.amministratore)
- oggetto.append(p)
- print('amministratori disponibili',len(amministratore))
- return (amministratore,oggetto)
- #listaAZP: riporta la lista delle aziende in base all'amministratore
- def listaAZP(amministratore=None):
- print('Parametro amministratore',amministratore,type(amministratore))
- amm = None
- if isinstance(amministratore,Amministratore):
- print('amministratore: instanza Amministratore')
- amm=amministratore
- if isinstance(amministratore,int):
- print('amministratore: istanza int')
- amm = Amministratore.objects.get(pk=amministratore)
- if amm == None:
- print('problema con la definizione di amministratore')
- return []
- print('dati rilevati',amm.id,amm.login)
- lam = amm.azp_set.filter(permesso__nome="AZIENDA")
- print('lunghezza LAM',len(lam))
- aziende = list()
- oggetto = list()
- for p in lam:
- aziende.append(p.azienda)
- oggetto.append(p)
- # prima di restituire mettiamo in ordine
- aziende = sorted(aziende, key = lambda x: x.nome,reverse=False)
- print('aziende disponibili',len(aziende))
- return (aziende,oggetto)
- # listaSEP: ritorna la lista delle sedi per azienda e amministratore
- def listaSEP(azienda=None,amministratore=None,permesso=None):
- print("listaSEP",azienda,amministratore,permesso)
-
- azi = None
- if isinstance(azienda,Azienda):
- print('Azienda: instanza Azienda')
- azi = azienda
- elif isinstance(azienda,int):
- print('Azienda: istanza int')
- azi = Azienda.objects.get(pk=azienda)
- amm = None
- if isinstance(amministratore,Amministratore):
- print('amministratore: instanza Amministratore')
- amm = amministratore
- elif isinstance(amministratore,int):
- print('amministratore: istanza int')
- amm = Amministratore.objects.get(pk=amministratore)
- per=None
- print('listaSEP',permesso)
- if isinstance(permesso,Permesso):
- print('si tratta di una istanza, possiamo passarla direttamente')
- per = permesso
- elif isinstance(permesso,int):
- print('si tratta di un int, quindi dobbiamo cercare il valore')
- per = Permesso.objects.get(pk=permesso)
- elif isinstance(permesso,str):
- print('si tratta di una str, quindi dobbiamo cercare il valore')
- per = Permesso.objects.get(nome=permesso)
- else:
- per = None
-
- print(amm,azi)
- if not amm:
- print('problema con la definizione di amministratore')
- return []
- if not azi:
- 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
-
- sedix = azi.sede_set.all()
- print("sedix len",len(sedix))
- lam = list()
-
- ### delicatissimo
- ### verificare che in lam venga effettivamente inserita solo la sede e non altri componenti
- ### sia che ci siano che non ci siano i permessi assegnati
-
- if per.nome not in permessi_assegnati:
- print("per.nome non in permessi assegnati")
- for s in sedix:
- tmp = SEP.objects.filter(sede=s).filter(amministratore=amm).filter(permesso=per)
- for n in tmp:
- #lam.append({'sede':n,'permesso':per})
- print("s:",n,per.nome,type(n))
- lam.append(n.sede)
- else:
- print("per.nome in permessi assegnati")
- #abbiamo un diritto di livello superiore
- for s in sedix:
- print("s:",s,per.nome,type(s))
- lam.append(s)
- #tmp.append({'sede':s,'permesso':per})
- #tmp.append(s)
- #lam = tmp
-
- print("lam",len(lam),type(lam))
- print(lam)
- print("****")
- sedi = list()
- oggetto = list()
-
- for p in lam:
- print("p:",p,type(p),p)
- sedi.append(p)
- oggetto.append({'sede':p,'permesso':per})
- #print("sedi",sedi)
- #print("oggetto",oggetto)
- #print("sede 0",sedi[0].nome)
- sedi = sorted(sedi, key = lambda x: x.nome,reverse=False)
- print('sedi disponibili',len(sedi))
- return (sedi,oggetto)
- # getSEP: riporta l'elenco dei permessi per sede filtrato per amministratore
- def getSEP(sede=None,amministratore=None):
- print('getSEP',sede,amministratore)
- sed=None
- if isinstance(sede,Sede):
- print('si tratta di una istanza dede')
- sed=sede
- if isinstance(sede,int):
- print('sede: istanza int')
- sed = Sede.objects.get(pk=sede)
- amm=None
- if isinstance(amministratore,Amministratore):
- print('si tratta di una istanza amministratore, 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)
- if not sed:
- return []
- permessi = list()
- for p in sed.sep_set.all().filter(amministratore=amm):
- permessi.append(p.permesso.nome)
- print('permessi disponibili',len(permessi))
- #for i in permessi: print(i,)
- return permessi
- # riporta un permesso (generico) o tutti i permessi
- def getPermesso(permesso=None):
- if permesso:
- try:
- p = Permesso.objects.get(nome=permesso)
- except Permesso.DoesNotExist as dne:
- p = None
- print("Errore:",dne)
- else:
- p = Permesso.objects.all()
- return p
- # da questa parte si impostano i permessi
- def setDefault(amministratore=None):
- pass
- # setAMP: imposta i permessi a livello azienda
- def setAMP(amministratore=None,permesso=None):
- 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):
- print('si tratta di un int, quindi dobbiamo cercare il valore')
- amm = Amministratore.objects.get(pk=amministratore)
- per=None
- print('getAMP',permesso)
- if isinstance(permesso,Permesso):
- print('si tratta di una istanza, possiamo passarla direttamente')
- per = permesso
- if isinstance(permesso,int):
- print('si tratta di un int, quindi dobbiamo cercare il valore')
- per = Permesso.objects.get(pk=permesso)
- if isinstance(permesso,str):
- print('si tratta di una str, quindi dobbiamo cercare il valore')
- per = Permesso.objects.get(nome=permesso)
- # aggiungiamo il permesso necessario
- p = AMP()
- p.permesso=per
- p.amministratore=amm
- try:
- p.save()
- except IntegrityError as ie:
- print(ie)
- return [p,]
- # setAZP: imposta i permessi a livello azienda
- def setAZP(azienda=None,amministratore=None,permesso=None):
- print('setAZP:',azienda,amministratore,permesso)
- azi = None
- if isinstance(azienda,Azienda):
- print('azienda: istanza')
- azi=azienda
- if isinstance(azienda,int):
- print('azienda: int')
- azi = Azienda.objects.get(pk=azienda)
- amm=None
- if isinstance(amministratore,Amministratore):
- print('amministratore: istanza')
- amm = amministratore
- if isinstance(amministratore,str):
- try:
- amministratore = int(amministratore)
- except ValueError as ve:
- print(ve)
-
- if isinstance(amministratore,int):
- print('si tratta di un int, quindi dobbiamo cercare il valore')
- amm = Amministratore.objects.get(pk=amministratore)
- per=None
- if isinstance(permesso,Permesso):
- print('permesso: istanza')
- per = permesso
- if isinstance(permesso,int):
- print('permesso: int')
- per = Permesso.objects.get(pk=permesso)
- if isinstance(permesso,str):
- print('permesso: str')
- per = Permesso.objects.get(nome=permesso)
-
- if not azi: print("Errore opzione azi")
- if not amm: print("Errore opzione amm")
- if not per: print("Errore opzione per")
- # aggiungiamo il permesso necessario
- print('in fase di salvataggio',azi,amm,per)
- p = AZP()
- p.permesso=per
- p.amministratore=amm
- p.azienda=azi
- try:
- p.save()
- except IntegrityError as ie:
- print(ie)
- return [p,]
- # setSEP: imposta i permessi a livello sede
- def setSEP(sede=None,amministratore=None,permesso=None):
- sed=None
- if isinstance(sede,Sede):
- print('si tratta di una istanza dede')
- sed=sede
- if isinstance(sede,int):
- print('sede: istanza int')
- sed = Sede.objects.get(pk=sede)
- amm=None
- if isinstance(amministratore,Amministratore):
- print('si tratta di una istanza, quindi possiamo direttamente accedere')
- amm = amministratore
- if isinstance(amministratore,str):
- print("Amministratore: str")
- amministratore = int(amministratore)
- if isinstance(amministratore,int):
- print('Amministratore: int')
- amm = Amministratore.objects.get(pk=amministratore)
- per=None
- if isinstance(permesso,Permesso):
- print('si tratta di una istanza, possiamo passarla direttamente')
- per = permesso
- if isinstance(permesso,int):
- print('si tratta di un int, quindi dobbiamo cercare il valore')
- per = Permesso.objects.get(pk=permesso)
- if isinstance(permesso,str):
- print('si tratta di una str, quindi dobbiamo cercare il valore')
- per = Permesso.objects.get(nome=permesso)
- if not sed: print("Errore opzione sed")
- if not amm: print("Errore opzione amm")
- if not per: print("Errore opzione per")
- # aggiungiamo il permesso necessario
- p = SEP()
- p.permesso=per
- p.amministratore=amm
- p.sede=sed
- try:
- p.save()
- except IntegrityError as ie:
- print(ie)
- return [p,]
|