| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410 |
- 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 *
- 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']):
- if t not in data['permesso']:
- data['permesso'].append(t)
- print('permessi assegnati:',data['permesso'])
- ### permessi fine ###
- '''
- ### ricerca delle aziende valide per questo amministratore
- assegnazioneazienda = listaAZP(data['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 data['azienda']:
- assegnazionesede = listaSEP(data['admin'],data['azienda'],"SEDE")
- print("assegnazionesede",len(assegnazionesede))
- '''
- 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')
- 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)
- ### 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 '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.amministratore.edit.html',data)
|