from django.shortcuts import render # Create your views here. from django.shortcuts import render from .models import * 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 # riporta l'elenco dei permessi per amministratore def getAMP(amministratore=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) 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) #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) ''' # 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): 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) #ottiene la lista degli amministratori per sede def listaAMMperSede(sede=None,permesso=None): sed = None if isinstance(sede,Sede): print('Sede: instanza Sede') sed = sede if 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 if 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 LAZ parametro indicato',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) #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) # ritorna la lista delle sedi per azienda e amministratore def listaSEP(azienda=None,amministratore=None,permesso=None): print("listaSEP",azienda,amministratore) 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) 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) per=None print('listaSEP',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) 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 [] print('dati rilevati',amm.id,amm.login) # devo ottenere la lista delle sedi, filtrate per azienda autorizzate per amministratore sedi = list() oggetto = list() sedix = azi.sede_set.all() 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) print("lam",len(lam)) for p in lam: #print(p,type(p),p.sede) sedi.append(p.sede) oggetto.append(p) sedi = sorted(sedi, key = lambda x: x.nome,reverse=False) print('sedi disponibili',len(sedi)) return (sedi,oggetto) #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 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,] 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,] # set Permessi 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,]