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 * def welcome(request): if not 'AdminId' in request.session: print("Non rilevo presensa AdminId in request.session") return HttpResponseRedirect(reverse("login:start")) AdminId = request.session['AdminId'] print('AdminId',AdminId) data = dict() data['HeaderTitle'] = getConfig('HeaderTitle') data['Navbar']=False admin = Amministratore.objects.get(pk=AdminId) data['admin'] = admin print('admin',admin.id,admin.nome) data['permesso'] = getAMP(admin)[0] data['permesso_amministratore'] = 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 amministratorelista = Amministratore.objects.all() data['amministratorelista'] = amministratorelista print(len(amministratorelista)) # mostriamo gli amministratori per l'azienda if azienda: print('trovato riferimento per azienda') amministratorelista = azienda.assegnazioneazienda_set.all() tmp=[] for al in amministratorelista: print(al.amministratore.nome) tmp.append(al.amministratore) data['amministratorelista'] = tmp if sede: print('trovato riferimento per sede') amministratorelista = 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['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') 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) 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 data['pane'] = "Amministratore" 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 request.method == 'POST': print("qualcosa e' stato premuto") if 'indietro' in request.POST: return HttpResponseRedirect(reverse("amministratore:welcome")) 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')) 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) data['pane'] = 'Sede' 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)