from django.shortcuts import render from .models import * from .forms import * from att.views import * from config.views import * from random import randint from django.http import HttpResponse,HttpResponseRedirect from django.urls import reverse from sicurezza.views import * from config.datafunc import * from django.db.models import Q def welcome(request): if not 'AdminId' in request.session: print("Non rilevo presensa AdminId in request.session") return HttpResponseRedirect(reverse("login:start")) ### funzioni esterne ### d = DataDict() data = d.getData() data['NavBar']=True data['ShowSelectAzienda'] = False data['ShowSelectSede'] = False define = Define(request) data['admin'] = define.getAdmin() data['azienda'] = define.getAzienda() data['AziendaId'] = define.getAziendaId() data['sede'] = define.getSede() data['SedeId'] = define.getSedeId() print('cazzo cazzo') ### funzioni esterne fine ### ### permessi inizio ### data['permesso'] = getAMP(data['admin'])[0] print("******",data['azienda']) if 'azienda' in data: print('**** azienda presente ****') for t in getAZP(data['azienda'],data['admin'])[0]: if t not in data['permesso']: data['permesso'].append(t) if 'sede' in data: print('**** sede presente ****') for t in getSEP(data['sede'],data['admin'])[0]: if t not in data['permesso']: data['permesso'].append(t) print('permessi assegnati:',data['permesso']) ### permessi fine ### amministratorelista = Amministratore.objects.all() data['amministratorelista'] = amministratorelista print(len(amministratorelista)) # mostriamo gli amministratori per l'azienda if data['azienda']: print('trovato riferimento per azienda') amministratorelista = data['azienda'].assegnazioneazienda_set.all() tmp=[] for al in amministratorelista: print(al.amministratore.nome) tmp.append(al.amministratore) data['amministratorelista'] = tmp if data['sede']: print('trovato riferimento per sede') amministratorelista = data['sede'].assegnazionesede_set.all() tmp = [] for al in amministratorelista: try: print(al.amministratore.nome) tmp1 = al.amministratore tmp.append(al.amministratore) except AttributeError as ae: print(ae) data['amministratorelista'] = tmp data['amministratorelista'] = sorted(data['amministratorelista'], key = lambda x: x.login,reverse=False) data['amministratorelistalen'] = len(data['amministratorelista']) if request.method == 'POST': print("qualcosa e' stato premuto") if 'indietro' in request.POST: return HttpResponseRedirect(reverse("azienda:welcome")) if 'sceltanuovo' in request.POST: request.session['AmministratoreEditId'] = 0 print('richiesto nuovo record') request.session['masteramm'] = True print('masteramm in edit adm',request.session['masteramm']) return HttpResponseRedirect(reverse('amministratore:edit')) formamministratoreeditid = FormAmministratoreEditId(request.POST,amministratore=data['amministratorelista']) if formamministratoreeditid.is_valid(): scelta = formamministratoreeditid.cleaned_data.get('scelta') request.session['AmministratoreEditId'] = scelta print("Scelta effettuata",scelta) request.session['masteramm'] = True print('masteramm in edit adm',request.session['masteramm']) return HttpResponseRedirect(reverse("amministratore:edit")) #data['amministratorelista'] = amministratorelista #data['numeroRecordAmministratore'] = len(amministratorelista) #print(data) return render(request,'amministratore.welcome.html',data) def edit(request): ''' edit amministratore o simile sulla base dei diritti assegnati, puo' leggero e/o scrivere nell'utente nella sede o nell'azienda. i diritti sono assegnati sulla base dell'utente e non successivamente all'assegnazione, tanto se l'utente ha una zona assegnata, quella puo' vedere e basta. ''' if not 'AdminId' in request.session: return HttpResponseRedirect(reverse("login:start")) data = dict() data['HeaderTitle'] = getConfig('HeaderTitle') data['Navbar']=False if 'AdminId' in request.session: data['AdminId'] = request.session['AdminId'] admin = Amministratore.objects.get(pk=data['AdminId']) data['admin'] = admin print('admin',admin.id,admin.nome) data['permesso'] = getAMP(admin)[0] azienda = None if 'AziendaId' in request.session: AziendaId = request.session['AziendaId'] print('AziendaId',AziendaId) azienda = Azienda.objects.get(pk=AziendaId) data['azienda'] = azienda sede = None if 'SedeId' in request.session: SedeId = request.session['SedeId'] print('SedeId',SedeId) try: sede = Sede.objects.get(pk=SedeId) except Sede.DoesNotExist as dne: print("Sede non esiste") data['sede'] = sede amministratore = None print(request) if 'AmministratoreEditId' in request.session: amministratoreEditId = request.session.get('AmministratoreEditId') try: amministratore = Amministratore.objects.get(pk=amministratoreEditId) except Amministratore.DoesNotExist as dne: amministratore = Amministratore() amministratore.pin = str(randint(100000,999999)) print('amministratore',amministratore.id,amministratore.nome) print("request.method",request.method) if 'masteramm' in request.session: print('masteramm',request.session['masteramm']) data['MASTERAMM'] = request.session['masteramm'] if request.method == 'POST': print("qualcosa e' stato premuto") if 'indietro' in request.POST: return HttpResponseRedirect(reverse("amministratore:welcome")) if 'AmministratoreDirittiAmministratoreButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreDirittiAmministratoreButton'") return HttpResponseRedirect(reverse("amministratore:editAMP")) if 'AmministratoreCancellaButton' in request.POST: print('editAmministratore: premuto "AmministratoreCancellaButton"') amp = amministratore.amp_set.all() azp = amministratore.azp_set.all() sep = amministratore.sep_set.all() print(amministratore.nome) print(len(amp),amp) print(len(azp),azp) print(len(sep),sep) for x in sep: x.delete() for x in azp: x.delete() for x in amp: x.delete() amministratore.delete() return HttpResponseRedirect(reverse("amministratore:welcome")) if 'AmministratoreDirittiAziendaButton' in request.POST: print('edit azienda: premuto "AmministratoreDirittiAziendaButton"') return HttpResponseRedirect(reverse("amministratore:editAZ")) if 'AmministratoreUpdateButton' in request.POST: formamministratore = FormAmministratore(request.POST) if formamministratore.is_valid(): print('form valida formamministratore') amministratore.login=formamministratore.cleaned_data.get('login') amministratore.nome=formamministratore.cleaned_data.get('nome') amministratore.mail=formamministratore.cleaned_data.get('mail') amministratore.pin=formamministratore.cleaned_data.get('pin') amministratore.save() print('id amministratore salvato/nuovo',amministratore.id,":",amministratore.nome) request.session['AmministratoreEditId'] = amministratore.id return HttpResponseRedirect(reverse('amministratore:welcome')) tmp = dict() tmp['nome'] = amministratore.nome tmp['login'] = amministratore.login tmp['pin'] = amministratore.pin tmp['mail'] = amministratore.mail data['amministratore'] = FormAmministratore(tmp) if amministratore.id: # elenco aziende autorizzate per amministratore data['listaazienda'] = listaAZP(amministratore)[0] print('lista azienda',len(data['listaazienda'])) # elenco dei permessi per amministratore data['listapermesso'] = getAMP(amministratore)[2] print('lista permesso',len(data['listapermesso'])) #calcola la differenza tra i permessi assegnati e quelli disponibili data['listapermessotutto'] = getPermesso() data['listapermessomancante'] = getAMP(amministratore)[1] data['listapermessodiff'] = list(set(data['listapermessotutto']) - set(data['listapermessomancante'])) print('Quanti ne mancano',len(data['listapermessodiff']),data['listapermessodiff']) #calcolo la differenza tra tutte le aziende e le aziende sottoposte a permesso listaaziendatutte = Azienda.objects.all() data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda'])) print('Differenza aziende',len(data['listaaziendadiff'])) return render(request,'amministratore.edit.html',data) def editAMP(request): ### consente di aggiornare i diritti a livello di amministratore ### if not 'AdminId' in request.session: return HttpResponseRedirect(reverse("login:start")) ### funzioni esterne ### d = DataDict() data = d.getData() data['NavBar']=True data['ShowSelectAzienda'] = False data['ShowSelectSede'] = False define = Define(request) data['admin'] = define.getAdmin() data['azienda'] = define.getAzienda() data['AziendaId'] = define.getAziendaId() data['sede'] = define.getSede() data['SedeId'] = define.getSedeId() ### funzioni esterne fine ### if 'AdminId' in request.session: data['AdminId'] = request.session['AdminId'] admin = Amministratore.objects.get(pk=data['AdminId']) data['admin'] = admin print('admin',admin.id,admin.nome) data['permesso'] = getAMP(admin)[0] amministratore = None if 'AmministratoreEditId' in request.session: amministratoreEditId = request.session.get('AmministratoreEditId') try: amministratore = Amministratore.objects.get(pk=amministratoreEditId) except Amministratore.DoesNotExist as dne: return HttpResponseRedirect(reverse("amministratore:edit")) print('amministratore',amministratore.id,amministratore.login,amministratore.nome) data['amministratore'] = amministratore data['listapermessiassegnati'] = getAMP(data['amministratore'])[1] print('listapermessiassegnati',data['listapermessiassegnati']) data['listapermessiassegnabili'] = Permesso.objects.all() print('listapermessiassegnabili',data['listapermessiassegnabili']) if request.method == 'POST': if 'AmministratoreButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreButton'") return HttpResponseRedirect(reverse("amministratore:edit")) if 'AmministratoreReturnButton' in request.POST: print("Un tasto èstato premuto 'AmministratoreReturnButton'") return HttpResponseRedirect(reverse("amministratore:welcome")) if 'indietro' in request.POST: print("Un tasto è stato premuto 'Indietro'") return HttpResponseRedirect(reverse("azienda:welcome")) formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST,permessi=data['listapermessiassegnabili']) if formpermessodaaggiungere.is_valid(): print('formpermessodaaggiungere valido') permesso = formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere') print('*' * 10) setAMP(amministratore,int(permesso)) print('*' * 10) else: print('non va: formpermessodaaggiungere',formpermessodaaggiungere) print('*' * 20) formpermessodarimuovere = FormPermessoDaRimuovere(request.POST) if formpermessodarimuovere.is_valid(): print('formpermessodarimuovere valido') permesso = formpermessodarimuovere.cleaned_data.get('ConfermaCancellazionePermesso') print('ConfermaCancellazionePermesso',permesso) delAMP(amministratore,permesso) else: print('non va: formpermessodarimuovere',formpermessodarimuovere) else: print('che merda do operazione') print(request.POST) data['listapermessiassegnati'] = getAMP(data['amministratore'])[1] print('listapermessiassegnati',data['listapermessiassegnati']) data['listapermessiassegnabili'] = Permesso.objects.all() print('listapermessiassegnabili',data['listapermessiassegnabili']) return render(request,'amministratore.edit.AMP.html',data) def editAZ(request): ### edit lista aziende autorizzate if not 'AdminId' in request.session: return HttpResponseRedirect(reverse("login:start")) ### funzioni esterne ### d = DataDict() data = d.getData() data['NavBar']=True data['ShowSelectAzienda'] = False data['ShowSelectSede'] = False define = Define(request) data['admin'] = define.getAdmin() data['azienda'] = define.getAzienda() data['AziendaId'] = define.getAziendaId() data['sede'] = define.getSede() data['SedeId'] = define.getSedeId() ### funzioni esterne fine ### if 'AdminId' in request.session: data['AdminId'] = request.session['AdminId'] admin = Amministratore.objects.get(pk=data['AdminId']) data['admin'] = admin print('admin',admin.id,admin.nome) data['permesso'] = getAMP(admin)[0] listaaziendatutte = Azienda.objects.all() if 'paramm' in request.session and request.session['paramm']: data['DONTSHOWDIRITTI']=True amministratore = None if 'AmministratoreEditId' in request.session: amministratoreEditId = request.session.get('AmministratoreEditId') try: amministratore = Amministratore.objects.get(pk=amministratoreEditId) except Amministratore.DoesNotExist as dne: return HttpResponseRedirect(reverse("amministratore:edit")) print('amministratore',amministratore.id,amministratore.login,amministratore.nome) data['amministratore'] = amministratore if amministratore: data['listaazienda'] = listaAZP(amministratore)[0] data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda'])) else: data['listaaziendadiff'] = list(set(listaaziendatutte)) #parliamo di diritti assegnati all'azienda. data['dirittiAZIENDA'] = Permesso.objects.filter(Q(classe='AZI')|Q(classe='SED')) print('dirittiAZIENDA',len(data['dirittiAZIENDA'])) if request.method == 'POST': print("qualcosa e' stato premuto in editAZ") if 'AmministratoreReturnButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreReturnButton'") return HttpResponseRedirect(reverse("amministratore:welcome")) if 'AmministratoreButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreButton'") return HttpResponseRedirect(reverse("amministratore:edit")) if 'indietro' in request.POST: print("Un tasto è stato premuto 'Indietro'") return HttpResponseRedirect(reverse("azienda:welcome")) if 'AziendaDaAggiungereButton' in request.POST: print('un tasto è stato premuto AziendaDaAggiungereButton') formaziendadaaggiungere = FormAziendaDaAggiungere(request.POST,azienda=listaaziendatutte) if formaziendadaaggiungere.is_valid(): print('AziendaDaAggiungere, form valida') azienda = formaziendadaaggiungere.cleaned_data.get('ListaAziendaDaAggiungere') print(azienda) setAZP(azienda,amministratore,'AZIENDA') else: print('AziendaDaAggiungere, form non valido') if 'SedeButton' in request.POST: print("Un tasto è stato premuto 'SedeButton'") azienda = request.POST.get('SedeButton') request.session['EditAziendaId'] = azienda return HttpResponseRedirect(reverse("amministratore:editSE")) if 'PermessoButton' in request.POST: print("Un tasto è stato premuto 'PermessoButton") azienda = request.POST.get('PermessoButton') request.session['EditAziendaPermessoId'] = azienda return HttpResponseRedirect(reverse("amministratore:editAZP")) if 'ConfermaCancellazioneAzienda' in request.POST: print("Un tasto è stato premuto 'ConfermaCancellazioneAzienda'") azi = int(request.POST.get('ConfermaCancellazioneAzienda')) delAZP(azi,amministratore) if amministratore: data['listaazienda'] = listaAZP(amministratore)[0] data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda'])) else: data['listaaziendadiff'] = list(set(listaaziendatutte)) return render(request,'amministratore.edit.AZ.html',data) def editAZP(request): ### edit diritti associati all'azienda. ### in questa sezione procediamo con l'assegnare o rimuovere i diritti di questo amministratore ### per le aziende in elenco. if not 'AdminId' in request.session: return HttpResponseRedirect(reverse("login:start")) ### funzioni esterne ### d = DataDict() data = d.getData() data['NavBar']=True data['ShowSelectAzienda'] = False data['ShowSelectSede'] = False define = Define(request) data['admin'] = define.getAdmin() data['azienda'] = define.getAzienda() data['AziendaId'] = define.getAziendaId() data['sede'] = define.getSede() data['SedeId'] = define.getSedeId() ### funzioni esterne fine ### if 'AdminId' in request.session: data['AdminId'] = request.session['AdminId'] admin = Amministratore.objects.get(pk=data['AdminId']) data['admin'] = admin print('admin',admin.id,admin.nome) data['permessoAMP'] = getAMP(admin)[1] amministratore = None if 'AmministratoreEditId' in request.session: amministratoreEditId = request.session.get('AmministratoreEditId') try: amministratore = Amministratore.objects.get(pk=amministratoreEditId) except Amministratore.DoesNotExist as dne: return HttpResponseRedirect(reverse("amministratore:edit")) print('amministratore',amministratore.id,amministratore.login,amministratore.nome) data['amministratore'] = amministratore if 'EditAziendaPermessoId' in request.session: azienda = Azienda.objects.get(pk=request.session.get('EditAziendaPermessoId')) print('azienda',azienda.nome) data['aziendaOnWork'] = azienda data['permessoAZP'] = getAZP(azienda,amministratore)[1] if 'paramm' in request.session and request.session['paramm']: data['DONTSHOWDIRITTI']=True print('amministratore',amministratore.id,amministratore.login,amministratore.nome) data['amministratore'] = amministratore #################################### listadirittidisponibili= Permesso.objects.filter(Q(classe='AZI')|Q(classe='SED')|Q(classe='UTE')|Q(classe='DOC')) # diciamo che fatta cosi' mi pare una pecionata, ma funzionata. magari va ottimizzata un po' print(type(listadirittidisponibili)) ldd = list() for i in listadirittidisponibili: ldd.append(i) print(type(ldd)) print('*' * 20) data['listapermessiassegnabili'] = list() for i in ldd: if i not in data['permessoAZP']: data['listapermessiassegnabili'].append(i) ########################################## if request.method == 'POST': print("qualcosa e' stato premuto") if 'AmministratoreReturnButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreReturnButton'") return HttpResponseRedirect(reverse("amministratore:welcome")) if 'AmministratoreButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreButton'") return HttpResponseRedirect(reverse("amministratore:edit")) if 'AmministratoreAziendaButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreAziendaButton'") return HttpResponseRedirect(reverse("amministratore:editAZ")) if 'PermessoDaAggiungereButton' in request.POST: print("Un tasto è stato premuto 'PermessoDaAggiungereButton'") formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST,permessi=data['listapermessiassegnabili']) if formpermessodaaggiungere.is_valid(): print('listapermessidaaggiungere',formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere')) setAZP(azienda,amministratore,int(formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere'))) else: print('errore formpermessodaaggiungere',formpermessodaaggiungere) if 'indietro' in request.POST: print("Un tasto è stato premuto 'Indietro'") return HttpResponseRedirect(reverse("azienda:welcome")) if 'ConfermaCancellazionePermesso' in request.POST: print("Un tasto è stato premuto 'ConfermaCancellazionePermesso'") delAZP(azienda,amministratore,int(request.POST.get('ConfermaCancellazionePermesso'))) data['permessoAZP'] = getAZP(azienda,amministratore)[1] #################################### listadirittidisponibili= Permesso.objects.filter(Q(classe='AZI')|Q(classe='SED')|Q(classe='UTE')|Q(classe='DOC')) # diciamo che fatta cosi' mi pare una pecionata, ma funzionata. magari va ottimizzata un po' print(type(listadirittidisponibili)) ldd = list() for i in listadirittidisponibili: ldd.append(i) print(type(ldd)) print('*' * 20) data['listapermessiassegnabili'] = list() for i in ldd: if i not in data['permessoAZP']: data['listapermessiassegnabili'].append(i) ########################################## return render(request,'amministratore.edit.AZP.html',data) def editSE(request): ### edit diritti associati alla sede ### in questa sezione procediamo con l'assegnare o rimuovere i diritti di questo amministratore ### per le sedi in elenco. if not 'AdminId' in request.session: return HttpResponseRedirect(reverse("login:start")) ### funzioni esterne ### d = DataDict() data = d.getData() data['NavBar']=True data['ShowSelectAzienda'] = False data['ShowSelectSede'] = False define = Define(request) data['admin'] = define.getAdmin() data['azienda'] = define.getAzienda() data['AziendaId'] = define.getAziendaId() data['sede'] = define.getSede() data['SedeId'] = define.getSedeId() ### funzioni esterne fine ### if not 'EditAziendaId' in request.session: HttpResponseRedirect(reverse("amministratore:editAZ")) if 'AdminId' in request.session: data['AdminId'] = request.session['AdminId'] admin = Amministratore.objects.get(pk=data['AdminId']) data['admin'] = admin print('admin',admin.id,admin.nome) data['permesso'] = getAMP(admin)[0] amministratore = None if 'AmministratoreEditId' in request.session: amministratoreEditId = request.session.get('AmministratoreEditId') try: amministratore = Amministratore.objects.get(pk=amministratoreEditId) except Amministratore.DoesNotExist as dne: return HttpResponseRedirect(reverse("amministratore:editSE")) print('amministratore',amministratore.id,amministratore.login,amministratore.nome) data['amministratore'] = amministratore azienda = Azienda.objects.get(pk=request.session.get('EditAziendaId')) print('azienda',azienda.nome) data['aziendaOnWork'] = azienda data['listasede'] = listaSEP(azienda,amministratore.id,"SEDE")[0] data['listasede'].sort(key=lambda x: x.nome,reverse=False) print("data['listasede']",len(data['listasede']),type(data['listasede'])) listasedetutte = azienda.sede_set.all().order_by('nome') print('listasedetutte',len(listasedetutte)) data['listasedediff'] = list(set(listasedetutte)-set(data['listasede'])) data['listasedediff'].sort(key=lambda x: x.nome,reverse=False) #data['listasedediff'] = listasedetutte print("data['listasedediff']",len(data['listasedediff'])) # parliamo di diritti relativi alle sedi data['dirittiSEDE'] = Permesso.objects.filter(classe='SED') print('dirittiSEDE',len(data['dirittiSEDE'])) print('minchia') if request.method == 'POST': print("qualcosa é stato premuto") if 'AmministratoreReturnButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreReturnButton'") return HttpResponseRedirect(reverse("amministratore:welcome")) if 'AmministratoreButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreButton'") return HttpResponseRedirect(reverse("amministratore:edit")) if 'AmministratoreAziendaButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreAziendaButton'") return HttpResponseRedirect(reverse("amministratore:editAZ")) if 'AmministratoreEditAZPButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreEditAZPButton'") return HttpResponseRedirect(reverse("amministratore:editAZ")) if 'PermessoButton' in request.POST: print("Un tasto è stato premuto 'PermessoButton") sede = request.POST.get('PermessoButton') request.session['EditSedePermessoId'] = sede return HttpResponseRedirect(reverse("amministratore:editSEP")) if 'SedeConfermaCancellazionePermessoButton' in request.POST: print("un tasto è stato premuto 'SedeConfermaCancellazionePermessoButton'") sede = request.POST['SedeConfermaCancellazionePermessoButton'] print('Sede da rimuovere',sede) p = Permesso.objects.get(nome="SEDE") lista = SEP.objects.filter(sede=sede,amministratore=amministratore,permesso=p) print('lista lista',lista) for p in lista: p.delete() p = Permesso.objects.get(nome="DOCUMENTO") lista = SEP.objects.filter(sede=sede,amministratore=amministratore,permesso=p) print('lista lista',lista) for p in lista: p.delete() p = Permesso.objects.get(nome="UTENTE") lista = SEP.objects.filter(sede=sede,amministratore=amministratore,permesso=p) print('lista lista',lista) for p in lista: p.delete() if 'SedeDaAggiungereButton' in request.POST: print('un tasto è stato premuto SedeDaAggiungereButton') formsededaaggiungere = FormSedeDaAggiungere(request.POST,sede=data['listasedediff']) if formsededaaggiungere.is_valid(): print('SedeDaAggiungere, form valida') sede = formsededaaggiungere.cleaned_data.get('ListaSedeDaAggiungere') print('id sede da aggiungere',sede) setSEP(sede,amministratore,'SEDE') setSEP(sede,amministratore,'UTENTE') setSEP(sede,amministratore,'DOCUMENTO') else: print('SedeDaAggiungere, form non valido') if 'SedePermessoUpdateButton' in request.POST: print("Un tasto è stato premuto 'SedePermessoUpdate'") print(request.POST) formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST) formpermessodaaggiungere.c(Permesso.objects.filter(classe="SED")) if formpermessodaaggiungere.is_valid(): print('formpermessodaaggiungere è valido') print("cazzo cazzo") else: print('errore',formpermessodaaggiungere) #formpermessoupdate = form.PermessoUpdate(request.POST) data['listasede'] = listaSEP(azienda,amministratore.id,"SEDE")[0] data['listasede'].sort(key=lambda x: x.nome,reverse=False) print("data['listasede']",len(data['listasede']),type(data['listasede'])) listasedetutte = azienda.sede_set.all().order_by('nome') print('listasedetutte',len(listasedetutte)) data['listasedediff'] = list(set(listasedetutte)-set(data['listasede'])) data['listasedediff'].sort(key=lambda x: x.nome,reverse=False) #data['listasedediff'] = listasedetutte print("data['listasedediff']",len(data['listasedediff'])) # parliamo di diritti relativi alle sedi data['dirittiSEDE'] = Permesso.objects.filter(classe='SED') print('dirittiSEDE',len(data['dirittiSEDE'])) return render(request,'amministratore.edit.SE.html',data) def editSEP(request): ### edit diritti associati all sede. ### in questa sezione procediamo con l'assegnare o rimuovere i diritti di questo amministratore ### per le aziende in elenco. if not 'AdminId' in request.session: return HttpResponseRedirect(reverse("login:start")) ### funzioni esterne ### d = DataDict() data = d.getData() data['NavBar']=True data['ShowSelectAzienda'] = False data['ShowSelectSede'] = False define = Define(request) data['admin'] = define.getAdmin() data['azienda'] = define.getAzienda() data['AziendaId'] = define.getAziendaId() data['sede'] = define.getSede() data['SedeId'] = define.getSedeId() ### funzioni esterne fine ### if 'AdminId' in request.session: data['AdminId'] = request.session['AdminId'] admin = Amministratore.objects.get(pk=data['AdminId']) data['admin'] = admin print('admin',admin.id,admin.nome) data['permessoSEP'] = getAMP(admin)[1] amministratore = None if 'AmministratoreEditId' in request.session: amministratoreEditId = request.session.get('AmministratoreEditId') try: amministratore = Amministratore.objects.get(pk=amministratoreEditId) except Amministratore.DoesNotExist as dne: return HttpResponseRedirect(reverse("amministratore:edit")) print('amministratore',amministratore.id,amministratore.login,amministratore.nome) data['amministratore'] = amministratore if 'EditSedePermessoId' in request.session: sede = Sede.objects.get(pk=request.session.get('EditSedePermessoId')) print('sede',sede.nome) data['sedeOnWork'] = sede data['permessoSEP'] = getSEP(sede,amministratore)[1] print('PermessoSEP',data['permessoSEP']) if 'paramm' in request.session and request.session['paramm']: data['DONTSHOWDIRITTI']=True print('amministratore',amministratore.id,amministratore.login,amministratore.nome) data['amministratore'] = amministratore #################################### listadirittidisponibili= Permesso.objects.filter(Q(classe='SED')|Q(classe='UTE')|Q(classe='DOC')) # diciamo che fatta cosi' mi pare una pecionata, ma funzionata. magari va ottimizzata un po' print(type(listadirittidisponibili)) ldd = list() for i in listadirittidisponibili: ldd.append(i) print(type(ldd)) print('*' * 20) data['listapermessiassegnabili'] = list() for i in ldd: if i not in data['permessoSEP']: data['listapermessiassegnabili'].append(i) ########################################## if request.method == 'POST': print("qualcosa e' stato premuto") if 'AmministratoreReturnButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreReturnButton'") return HttpResponseRedirect(reverse("amministratore:welcome")) if 'AmministratoreButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreButton'") return HttpResponseRedirect(reverse("amministratore:edit")) if 'AmministratoreAziendaButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreAziendeButton'") return HttpResponseRedirect(reverse("amministratore:editAZ")) if 'AmministratoreSedeButton' in request.POST: print("Un tasto è stato premuto 'AmministratoreAziendeButton'") return HttpResponseRedirect(reverse("amministratore:editSE")) if 'PermessoDaAggiungereButton' in request.POST: print("Un tasto è stato premuto 'PermessoDaAggiungereButton'") formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST,permessi=data['listapermessiassegnabili']) if formpermessodaaggiungere.is_valid(): print('listapermessidaaggiungere',formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere')) setSEP(sede,amministratore,int(formpermessodaaggiungere.cleaned_data.get('ListaPermessiDaAggiungere'))) else: print('errore formpermessodaaggiungere',formpermessodaaggiungere) if 'ConfermaCancellazionePermesso' in request.POST: print("Un tasto è stato premuto 'ConfermaCancellazionePermesso'") delSEP(azienda,amministratore,int(request.POST.get('ConfermaCancellazionePermesso'))) data['permessoSEP'] = getSEP(sede,amministratore)[1] #################################### listadirittidisponibili= Permesso.objects.filter(Q(classe='SED')|Q(classe='UTE')|Q(classe='DOC')) # diciamo che fatta cosi' mi pare una pecionata, ma funzionata. magari va ottimizzata un po' print(type(listadirittidisponibili)) ldd = list() for i in listadirittidisponibili: ldd.append(i) print(type(ldd)) print('*' * 20) data['listapermessiassegnabili'] = list() for i in ldd: if i not in data['permessoSEP']: data['listapermessiassegnabili'].append(i) ########################################## return render(request,'amministratore.edit.SEP.html',data) ''' if 'ConfermaCancellazionePermessoXAmministratore' in request.POST: print("Premuto tasto ConfermaCancellazionePermessoXAmministratore") formcancellapermessoxamministratore = FormCancellaPermessiXAmministratore(request.POST) if formcancellapermessoxamministratore.is_valid(): print('Form Valida CancellaPermessoXAmministratore') permessodarimuovere = formcancellapermessoxamministratore.cleaned_data.get('ConfermaCancellazionePermessoXAmministratore') print('Permesso da rimuovere',permessodarimuovere) amp = AMP.objects.get(pk=permessodarimuovere) amp.delete() if 'PermessoDaAggiungereButton' in request.POST: print("Premuto aggiunta permesso") formpermessodaaggiungere = FormPermessoDaAggiungere(request.POST) print(formpermessodaaggiungere) if formpermessodaaggiungere.is_valid(): print("Form permessodaaggiungere valida") pda = Permesso.objects.get(pk=formpermessodaaggiungere.cleaned_data.get('permessodaaggiungere')) print('pda',pda.nome) amp = AMP() amp.amministratore = amministratore amp.permesso = pda amp.save() data['pane']='Permesso' if 'AziendaConfermaCancellazionePermesso' in request.POST: formcancellapermesso = FormCancellaPermessi(request.POST) if formcancellapermesso.is_valid(): print('form valida formcancellapermesso') aziendadarimuovere = formcancellapermesso.cleaned_data.get('ConfermaCancellazionePermesso') print('azienda da rimuovere',aziendadarimuovere) #prima cosa togliamo i diritti alle sedi aztorm = None try: aztorm = Azienda.objects.get(pk=aziendadarimuovere) except Azienda.DoesNotExist: print('Azienda non trovata',aziendadarimuovere) print('azienda trovata',aztorm.nome) print("Iniziamo dalle sedi") sedi = aztorm.sede_set.all() for tmp in sedi: print('sede',tmp.nome) for p in tmp.sep_set.all(): print('permesso',p.permesso.nome) p.delete() print("Ora tocca all'azienda") for p in aztorm.azp_set.all(): print('permesso azienda',p.permesso.nome) p.delete() data['pane'] = "Azienda" listaaziendatutte = Azienda.objects.all() if amministratore.id: data['listaazienda'] = listaAZP(amministratore)[0] data['listaaziendadiff'] = list(set(listaaziendatutte)-set(data['listaazienda'])) else: data['listaaziendadiff'] = list(set(listaaziendatutte)) if 'AziendaDaAggiungereButton' in request.POST: formaziendamancante=FormAziendaMancante(request.POST) formaziendamancante.c(data['listaaziendadiff']) #print('fam',formaziendamancante) if formaziendamancante.is_valid(): print('form valida formaziendamancante') aziendadaaggiungere = formaziendamancante.cleaned_data.get('aziendadaaggiungere') print('Azienda da aggiungere',aziendadaaggiungere) aztoadd = None try: aztoadd = Azienda.objects.get(pk=aziendadaaggiungere) except Azienda.DoesNotExist as dne: print("Azienda non trovata",aziendadaaggiungere) if aztoadd: print('Azienda in corso di aggiunta',aztoadd.nome) azp = AZP() azp.azienda = aztoadd azp.amministratore = amministratore azp.permesso = getPermesso("AZIENDA") print('permesso base',getPermesso("AZIENDA").nome) azp.save() print(azp.id) data['pane']='Azienda' if 'AziendaSelect' in request.POST: print('Richiesta Selezione Azienda') formaziendaselect = FormAziendaSelect(request.POST) if formaziendaselect.is_valid(): print('FormAziendaSelect valido') aziendaselect = formaziendaselect.cleaned_data.get('AziendaSelect') request.session['aziendaselect'] = aziendaselect print('aziendaselect',aziendaselect) # una volta ottenuta l'azienda, selezioniamo le sedi: # le selezioni sono due: # 1 lista delle sedi gia' associate all'utente attraverso il permesso(SEP) # 2 lista delle sedi ancora da assegnare (tolte le sedi gia' assegnate) data['listasede'] = listaSEP(aziendaselect,amministratore)[0] data['listasedediff']= list(set(Azienda.objects.get(pk=aziendaselect).sede_set.all()) - set(listaSEP(aziendaselect,amministratore)[0])) print("lista sede",len(data['listasede'])) data['pane']='Azienda' if 'SedeConfermaCancellazionePermesso' in request.POST: print('Richiesta cancellazione Permessi Sede') if 'SedeDaAggiungereButton' in request.POST: if 'aziendaselect' in request.session: aziendaselect = request.session.get('aziendaselect') print('Richiesta Sede da aggiungere') data['listasede'] = listaSEP(aziendaselect,amministratore)[0] data['listasedediff']= list(set(Azienda.objects.get(pk=aziendaselect).sede_set.all()) - set(listaSEP(aziendaselect,amministratore)[0])) print('listasedediff len',len(data['listasedediff'])) formsedemancante = FormSedeMancante(request.POST,lista=data['listasedediff']) #formsedemancante.c(data['listasedediff']) if 'ListaSedeMancante' in request.POST: print('ListaSedeMancante',request.POST['ListaSedeMancanteSelect']) if formsedemancante.is_valid(): listasedemancante = formsedemancante.cleaned_data.get('ListaSedeMancanteSelect') print(listasedemancante) for lsm in listasedemancante: setSEP(Sede.objects.get(pk=lsm),amministratore,Permesso.objects.get(nome="SEDE")) #else: print(formsedemancante) ''' ### editing amministratore senza ulteriori funzioni ### def editAmministratore(request): if not 'AdminId' in request.session: return HttpResponseRedirect(reverse("login:start")) ### funzioni esterne ### d = DataDict() data = d.getData() data['NavBar']=True data['ShowSelectAzienda'] = False data['ShowSelectSede'] = False define = Define(request) data['admin'] = define.getAdmin() data['azienda'] = define.getAzienda() data['AziendaId'] = define.getAziendaId() data['sede'] = define.getSede() data['SedeId'] = define.getSedeId() print('cazzo cazzo') ### funzioni esterne fine ### if 'AdminId' in request.session: data['AdminId'] = request.session['AdminId'] admin = Amministratore.objects.get(pk=data['AdminId']) data['admin'] = admin print('admin',admin.id,admin.nome) data['permesso'] = getAMP(admin)[0] amministratore = data['admin'] print('amministratore',amministratore.id,amministratore.nome) if request.method == 'POST': print("qualcosa e' stato premuto") if 'indietro' in request.POST: return HttpResponseRedirect(reverse("azienda:welcome")) if 'AmministratoreDirittiAziendaButton' in request.POST: print("premuto: 'AmministratoreDirittiAziendaButton'") return HttpResponseRedirect(reverse("amministratore:editAZ")) if 'AmministratoreUpdateButton' in request.POST: formamministratore = FormAmministratore(request.POST) if formamministratore.is_valid(): print('form valida formamministratore') amministratore.login=formamministratore.cleaned_data.get('login') amministratore.nome=formamministratore.cleaned_data.get('nome') amministratore.mail=formamministratore.cleaned_data.get('mail') amministratore.pin=formamministratore.cleaned_data.get('pin') amministratore.save() print('id amministratore salvato/nuovo',amministratore.id,":",amministratore.nome) tmp = dict() tmp['nome'] = amministratore.nome tmp['login'] = amministratore.login tmp['pin'] = amministratore.pin tmp['mail'] = amministratore.mail data['amministratore'] = FormAmministratore(tmp) return render(request,'amministratore.edit.html',data)