from django.shortcuts import render from django.http import HttpResponseRedirect from django.urls import reverse from .models import * from config.views import * from att.views import * from .forms import * from sicurezza.views import * def welcome(request): if not 'AdminId' in request.session: return HttpResponseRedirect(reverse("login:start")) data = dict() data['HeaderTitle'] = getConfig('HeaderTitle') data['Navbar']=True AdminId = request.session['AdminId'] print('AdminId',AdminId) admin = Amministratore.objects.get(pk=AdminId) data['admin'] = admin print('admin',admin.id,admin.nome) 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 ### permessi inizio ### data['permesso'] = getAMP(admin)[0] if 'AziendaId' in data: for t in getAZP(data['AziendaId'],admin): if t not in data['permesso']: data['permesso'].append(t) for t in getSEP(data['sede'],admin): if t not in data['permesso']: data['permesso'].append(t) #print('permesso',getAMP(admin)[0]) #print('permesso_azienda',getAZP(data['AziendaId'],admin)) #print('permesso_sede',getSEP(data['sede'],admin)) ### permessi fine ### ### ricerca delle aziende valide per questo amministratore assegnazioneazienda = listaAZP(admin)[0] print('assegnazioneazienda',len(assegnazioneazienda)) if len(assegnazioneazienda) == 1: ### c'e' una sola azienda, print(type(assegnazioneazienda[0])) azienda = Azienda.objects.get(pk=assegnazioneazienda[0].id) data['azienda'] = azienda request.session['AziendaId'] = azienda.id print("Singola Azienda",azienda.nome) ### lista delle sedi valida per questo amministratore assegnazionesede=None if azienda: assegnazionesede = listaSEP(admin,azienda,"SEDE") print("assegnazionesede",len(assegnazionesede)) ### lista attività ### data['listaAttivitaxAmministrazione']=getLogxAmministrazione(admin) if request.method=="POST": print(request.POST) if 'indietro' in request.POST: print('premuto tast indietro,logout') return HttpResponseRedirect(reverse("login:start")) if "sceltaazienda" in request.POST: sceltaazienda = request.POST.get('sceltaazienda') try: sceltaazienda = int(sceltaazienda) except ValueError as ve: print("Non e' stata fatta la scelta corretta",ve) return HttpResponseRedirect(reverse('azienda:welcome')) print("sceltaazienda = ",request.POST.get('sceltaazienda')) # attività su nuova/edit azienda if sceltaazienda == -1: #richiesta una nuova azienda print('sceltaazienda -1:',sceltaazienda) if "AziendaId" in request.session: del request.session['AziendaId'] if "azienda" in request.session: del request.session['azienda'] if "SedeId" in request.session: del request.session['SedeId'] if "sede" in request.session: del request.session['sede'] return HttpResponseRedirect(reverse('azienda:welcome')) elif sceltaazienda == 0: print('sceltaazienda 0:',sceltaazienda) request.session['AziendaIdEdit'] = 0 print('AziendaId',request.session['AziendaIdEdit']) return HttpResponseRedirect(reverse('azienda:editAzienda')) else: try: azienda = Azienda.objects.get(pk=sceltaazienda) data['azienda'] = azienda request.session['AziendaId'] = azienda.id request.session['SedeId'] = -1 if 'sede' in data: del data['sede'] except Azienda.DoesNotExist as dne: print("errore, oggetto inesistente",dne) if "sceltasede" in request.POST: sceltasede = request.POST.get('sceltasede') try: sceltasede = int(sceltasede) request.session['SedeId'] = sceltasede except ValueError as ve: print("Non e' stata fatta la scelta corretta",ve) return HttpResponseRedirect(reverse('azienda:welcome')) print("sceltasede = ",request.POST.get('sceltasede')) if sceltasede == -1: print('sceltasede -1:',sceltasede) if 'sede' in data: del data['sede'] elif sceltasede == 0: #richiesta una nuova azienda print('sceltasede 0:',sceltasede) request.session['SedeIdEdit'] = 0 return HttpResponseRedirect(reverse('azienda:editSede')) else: try: sede = Sede.objects.get(pk=sceltasede) data['sede'] = sede request.session['SedeId'] = sede.id except Sede.DoesNotExist as dne: print("errore,oggetto inesistente",dne) if "utenti" in request.POST: print('premuto tasto utenti') return HttpResponseRedirect(reverse('utente:welcome')) if 'documenti' in request.POST: # stato premuto il tasto documenti print('premuto tasto documenti') return HttpResponseRedirect(reverse('documento:welcome')) if "attivita" in request.POST: print('premuto tasto attivita') print("azioenda:",azienda) data['listaAttivitaxAzienda']=getLogxAzienda(azienda) if 'comunicazioni' in request.POST: print('premuto tasto comunicazioni') return HttpResponseRedirect(reverse('comunicazione:welcome')) if 'parazienda' in request.POST: print('premuto tasto Par.Azienda') azid = request.POST.get('parazienda') print('azienda passata',request.POST.get('parazienda')) azienda = Azienda.objects.get(pk=azid) request.session['AziendaId'] = azienda.id request.session['AziendaIdEdit'] = azienda.id return HttpResponseRedirect(reverse('azienda:editAzienda')) if 'parsede' in request.POST: print('premuto tasto Par.Sede') seid = request.POST.get('parsede') print('sede passata',request.POST.get('parsede')) sede = Sede.objects.get(pk=seid) request.session['SedeId'] = sede.id request.session['SedeIdEdit'] = sede.id return HttpResponseRedirect(reverse('azienda:editSede')) if 'amministratore' in request.POST: print(' premuto tasto Amministratore') return HttpResponseRedirect(reverse('amministratore:welcome')) data['AziendaLista'] = assegnazioneazienda if 'azienda' in data: print('azienda selezionata:',data['azienda'].nome) # costruisce la lista delle sedi. #print(":::",listaSEP(data['azienda'],admin)) data['SedeLista'] = listaSEP(data['azienda'],admin,"SEDE")[0] #print("::::",data['SedeLista']) #print(data) print('numero aziende',len(data['AziendaLista'])) if 'SedeLista' in data: print('numero di sedi',len(data['SedeLista'])) #for i in data['SedeLista']: print(":::",i.nome) return render(request,'azienda.welcome.html',data) # creazione azienda def editAzienda(request): if not 'AdminId' in request.session: return HttpResponseRedirect(reverse("login:start")) data=dict() data['HeaderTitle'] = getConfig('HeaderTitle') data['Navbar']=False AdminId = request.session['AdminId'] print('AdminId',AdminId) admin = Amministratore.objects.get(pk=AdminId) data['admin'] = admin print('admin',admin.id,admin.nome) 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 ### azienda su cui effettuare le operazioni azienda = None if 'AziendaIdEdit' in request.session: print('trovato riferimento AziendaIdEdit',request.session.get('AziendaIdEdit')) azid = request.session.get('AziendaIdEdit') try: azienda = Azienda.objects.get(pk=azid) print('azienda trovata',azienda.nome) except Azienda.DoesNotExist as dnf: print(dnf) azienda = Azienda() #### permessi #### data['permesso'] = getAMP(admin)[0] for t in getAZP(azienda,admin): if t not in data['permesso']: data['permesso'].append(t) if 'sede' in data: for t in getSEP(data['sede'],admin): if t not in data['permesso']: data['permesso'].append(t) print('permessi:',data['permesso']) #### permessi #### if request.method == 'POST': print('un tasto è stato premuto') if 'indietro' in request.POST: return HttpResponseRedirect(reverse('azienda:welcome')) if 'AggiornaAziendaButton' in request.POST: print('premuto tasto "AggiornaAziendaButton"') nuovaazienda = formAzienda(request.POST) if nuovaazienda.is_valid(): print("il form AggiornaAziendaButton' valido",request.POST) azienda.nome = nuovaazienda.cleaned_data.get('nome') azienda.mail = nuovaazienda.cleaned_data.get('mail') azienda.partitaiva = nuovaazienda.cleaned_data.get('partitaiva') azienda.cambiopassword = nuovaazienda.cleaned_data.get('cambiopassword') azienda.forzanuovapassword = nuovaazienda.cleaned_data.get('forzanuovapassword') azienda.otppassword = nuovaazienda.cleaned_data.get('otppassword') azienda.save() request.session['AziendaIdEdit'] = azienda.id print('azienda:',azienda.id) request.session['AziendaId'] = azienda.id data['azienda'] = azienda ### nel caso l'azienda non esista, si aggiungono i permessi di base print("data['admin']",data['admin']) if 'AZIENDA' in getAMP(data['admin'])[0]: print('getAMP: Azienda') setAZP(azienda,data['admin'],"AZIENDA") if 'AZIENDA.CREA' in getAMP(data['admin'])[0]: print('getAMP: AZIENDA.CREA') setAZP(azienda,data['admin'],"AZIENDA.CREA") if 'AZIENDA.EDIT' in getAMP(data['admin'])[0]: print('getAMP: AZIENDA.EDIT') setAZP(azienda,data['admin'],"AZIENDA.EDIT") if 'UTENTE' in getAMP(data['admin'])[0]: print('getAMP: UTENTE') setAZP(azienda,data['admin'],"UTENTE") if 'UTENTE.CREA' in getAMP(data['admin'])[0]: print('getAMP: UTENTE.CREA') setAZP(azienda,data['admin'],"UTENTE.CREA") if 'UTENTE.EDIT' in getAMP(data['admin'])[0]: print('getAMP: UTENTE.EDIT') setAZP(azienda,data['admin'],"UTENTE.EDIT") else: data['aziendaForm'] = formAzienda(request.POST) print("il form 'AggiornaAziendaButton' non è valido") if 'CancellaAziendaPermessiButton' in request.POST: print('premuto "CancellaAziendaPermessiButton"') cancellaaziendaamministratoripermessi = request.POST.get('CancellaAziendaPermessiButton') print('CancellaAziendaAmministratoriPermessi',cancellaaziendaamministratoripermessi) azp = AZP.objects.get(pk=cancellaaziendaamministratoripermessi) if azp: print('Permesso Azienda Amministratore trovato - cancello') azp.delete() if 'PermessoDaAggiungereButton' in request.POST: print('premuto "PermessoDaAggiungereButton"') formaziendapermessi = formAziendaPermessi(request.POST,amministratori=Amministratore.objects.all()) #formaziendapermessi.c(Amministratore.objects.all()) # alternativa: lista dei soli amministratori con autorizzazione AZIENDA in AMM #print(formaziendapermessi) if formaziendapermessi.is_valid(): print('formAziendaPermessi valida') amministratori = formaziendapermessi.cleaned_data.get('ListaAmministratoriPermessi') print('amministratori da aggiungere',amministratori) for x in amministratori: print('am',amministratori,'az',azienda.nome) try: setAZP(azienda,str(x),"AZIENDA") except ValueError as ve: print('errore in SETAZP') else: print('formAziendaPermessi Errore') print(formaziendapermessi) formaziendafield = None if azienda: print('Abbiamo azienda',azienda.nome) tmp = dict() tmp['id'] = azienda.id tmp['nome'] = azienda.nome tmp['partitaiva'] = azienda.partitaiva tmp['mail'] = azienda.mail tmp['forzanuovapassword'] = azienda.forzanuovapassword tmp['cambiopassword'] = azienda.cambiopassword tmp['otppassword'] = azienda.otppassword formaziendafield = formAzienda(tmp) else: tmp = dict() tmp['nome'] = '' tmp['partitaiva'] = '' tmp['mail'] = user.mail tmp['forzanuovapassword'] = False tmp['cambiopassword' ] = False tmp['otppassword'] = False formaziendafield = formAzienda(tmp) data['aziendaForm'] = formaziendafield data['listaAmministratore'] = listaAMMperAzienda(AziendaId)[1] print(data['listaAmministratore']) data['listaAmministratoreDaAggiungere'] = Amministratore.objects.all() return render(request,'azienda.editAzienda.html',data) def editSede(request): if not 'AdminId' in request.session: return HttpResponseRedirect(reverse("login:start")) data=dict() data['HeaderTitle'] = getConfig('HeaderTitle') data['Navbar']=False AdminId = request.session['AdminId'] print('AdminId',AdminId) admin = Amministratore.objects.get(pk=AdminId) data['admin'] = admin print('admin',admin.id,admin.nome) 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 sede = None if 'SedeIdEdit' in request.session: print('trovato riferimento SedeIdEdit',request.session.get('SedeIdEdit')) seid = request.session.get('SedeIdEdit') try: sede = Sede.objects.get(pk=seid) print('sede trovata',sede.nome) flag = True except Sede.DoesNotExist as dne: print('Sede indicata inesistente',dne) sede = Sede() sede.azienda = Azienda.objects.get(pk=AziendaId) print('sede.azienda',sede.azienda.nome) sede.cambiopassword = sede.azienda.cambiopassword sede.forzanuovapassword = sede.azienda.forzanuovapassword sede.otppassword = sede.azienda.otppassword #### permessi #### data['permesso'] = getAMP(admin)[0] for t in getAZP(azienda,admin): if t not in data['permesso']: data['permesso'].append(t) for t in getSEP(data['sede'],admin): if t not in data['permesso']: data['permesso'].append(t) print('permessi:',data['permesso']) #### permessi #### if request.method == "POST": print('un tasto è stato premuto') if 'indietro' in request.POST: return HttpResponseRedirect(reverse('azienda:welcome')) if 'AggiornaSedeButton' in request.POST: print('premuto tasto "AggiornaSedeButton"') nuovasede = formSede(request.POST) if nuovasede.is_valid(): print('il form "formSede" è valido') sede.nome = nuovasede.cleaned_data.get('nome') sede.mail = nuovasede.cleaned_data.get('mail') sede.cambiopassword = nuovasede.cleaned_data.get('cambiopassword') sede.forzanuovapassword = nuovasede.cleaned_data.get('forzanuovapassword') sede.otppassword = nuovasede.cleaned_data.get('otppassword') sede.info = nuovasede.cleaned_data.get('info') sede.identificativo = nuovasede.cleaned_data.get('identificativo') sede.save() request.session['SedeIdEdit'] = sede.id print('sede:',sede.id) print('azienda',sede.nome) request.session['SedeId'] = sede.id data['sede'] = sede # nel caso la sede non esista, vediamo di crearla print("data['admin']",data['admin']) if 'SEDE' in getAMP(data['admin'])[0]: print('getAMP: SEDE') setSEP(sede,data['admin'],"SEDE") if 'SEDE.CREA' in getAMP(data['admin'])[0]: print('getAMP: SEDE.CREA') setSEP(sede,data['admin'],"SEDE.CREA") if 'SEDE.EDIT' in getAMP(data['admin'])[0]: print('getAMP: SEDE.EDIT') setSEP(sede,data['admin'],"SEDE.EDIT") if 'UTENTE' in getAMP(data['admin'])[0]: print('getAMP: UTENTE') setSEP(sede,data['admin'],"UTENTE") if 'UTENTE.CREA' in getAMP(data['admin'])[0]: print('getAMP: UTENTE.CREA') setSEP(sede,data['admin'],"UTENTE.CREA") if 'UTENTE.EDIT' in getAMP(data['admin'])[0]: print('getAMP: UTENTE.EDIT') setSEP(sede,data['admin'],"UTENTE.EDIT") else: data['sedeForm'] = formSede(request.POST) if 'CancellaSedePermessiButton' in request.POST: print('premuto "CancellaSedePermessiButton"') cancellasedeamministratoripermessi = request.POST.get('CancellaSedePermessiButton') print('CancellaSedeAmministratoriPermessi',cancellasedeamministratoripermessi) sep = SEP.objects.get(pk=cancellasedeamministratoripermessi) if sep: print('Permesso Sede Amministratore trovato - cancello') sep.delete() if 'PermessoDaAggiungereButton' in request.POST: print('premuto "PermessoDaAggiungereButton"') formsedepermessi = formSedePermessi(request.POST,amministratori=Amministratore.objects.all()) #formaziendapermessi.c(Amministratore.objects.all()) # alternativa: lista dei soli amministratori con autorizzazione AZIENDA in AMM #print(formaziendapermessi) if formsedepermessi.is_valid(): print('formSedePermessi valida') amministratori = formsedepermessi.cleaned_data.get('ListaAmministratoriPermessi') for i in amministratori: print('amministratori da aggiungere',i) setSEP(sede,str(i),"SEDE") else: print('formSedePermessi Errore') print(formsedepermessi) formsedefield = None if sede: print('Abbiamo sede',sede.nome) tmp = dict() tmp['nome'] = sede.nome tmp['info'] = sede.info tmp['identificativo'] = sede.identificativo tmp['cambiopassword'] = sede.cambiopassword tmp['forzanuovapassword'] = sede.forzanuovapassword tmp['otppassword'] = sede.otppassword print('stato tmp',tmp) formsedefield = formSede(tmp) data['sedeForm'] = formsedefield print("**** sedeId",SedeId) data['listaAmministratore'] = listaAMMperSede(SedeId)[1] print("lamm",data['listaAmministratore']) data['listaAmministratoreDaAggiungere'] = Amministratore.objects.all() return render(request,'azienda.editSede.html',data)