from django.shortcuts import render from django.http import HttpResponseRedirect from django.urls import reverse import django.db.utils from .models import * from .forms import * from supporto import managepassword from sicurezza.views import * from logger.views import * from comunicazioni.views import * from datetime import date from configurazione.views import * import json from mqtt import views as m from mqtt.views import mqtt # nuovo sistema mqtt che va a sostiture 'm' # Create your views here. def listeList(request): ''' listing delle liste ''' session = getSessionParms(request) userauth = session['_userauth_'] liste2edit = session['_liste2edit_'] domain2edit = session['_domain2edit_'] request.session['_from_']="Liste:ListeList" try: utenteautorizzato = User.objects.get(pk=userauth) except User.DoesNotExist as dne: return HttpResponseRedirect(reverse('Login:login',args={})) if not domain2edit: domain2edit = utenteautorizzato.domain.id dominio = Domini.objects.get(pk=domain2edit) listelist = Liste.objects.filter(dominio=domain2edit).order_by('nome') value={} value['utenteautorizzato'] = utenteautorizzato value['user'] = None value['listelist'] = listelist value['dominio'] = dominio value['navbar'] = True print("livello autorizzazione",utenteautorizzato.securitylevel_id) securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id) securityrow = getSecurityRow(utenteautorizzato.securitylevel_id) value['securityrow'] = securityrow value['securityrowLen'] = len(securityrow) if request.method=="POST": if "Nuova Lista" in request.POST: print('nuova lista') request.session['_liste2edit_'] = 0 return HttpResponseRedirect(reverse('Liste:ListeEdit',args={})) if "edit" in request.POST: print('id da editare',request.POST['edit']) request.session['_listeaccount2edit_'] = request.POST['edit'] return HttpResponseRedirect(reverse('Liste:ListeAccount',args={})) if "disable" in request.POST: print('id da disattivare',request.POST['disable']) idpost = request.POST['disable'] u = Liste.objects.get(pk=idpost) print('id',u.mail.nome) u.enabled = False #t = date.today() #u.account_date_disabled=t.strftime("%Y-%m-%d") u.save() if "enable" in request.POST: print('id da attivare',request.POST['enable']) idpost = request.POST['enable'] u = Liste.objects.get(pk=idpost) print(f'lista: {u.nome}') u.enabled=True #u.account_date_disabled=None u.save() else: print('post non validato',request.POST) return render(request,"ListeList.html",value) def listeEdit(request): ''' edit e add di una nuova lista ''' session = getSessionParms(request) userauth = session['_userauth_'] liste2edit = session['_liste2edit_'] #listeaccount2edit = session['_listeaccount2edit_'] domain2edit = session['_domain2edit_'] request.session['_from_']="Liste:ListeListAccount" try: utenteautorizzato = User.objects.get(pk=userauth) except User.DoesNotExist as dne: return HttpResponseRedirect(reverse('Login:login',args={})) if not domain2edit: domain2edit = utenteautorizzato.domain.id dominio = Domini.objects.get(pk=domain2edit) dominioutenti = User.objects.filter(domain=dominio.id).filter(enabled=1) if not liste2edit or liste2edit==0: liste = Liste() else: liste = Liste.objects.get(pk=liste2edit) value={} value['utenteautorizzato'] = utenteautorizzato value['user'] = None value['listelist'] = liste.nome #value['listelistaccount'] = listelistAccount value['dominio'] = dominio value['dominioutenti'] = dominioutenti value['navbar'] = True print("livello autorizzazione",utenteautorizzato.securitylevel_id) securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id) securityrow = getSecurityRow(utenteautorizzato.securitylevel_id) securitylist = getSecurityList(securityrow) value['securityrow'] = securityrow value['securityrowLen'] = len(securityrow) value['securitylist'] = securitylist lal = ListAddListForm() value['lal'] = lal return render(request,"Listeedit.html",lal) def listeAccount(request): ''' liste degli utenti per lista ''' session = getSessionParms(request) userauth = session['_userauth_'] liste2edit = session['_liste2edit_'] listeaccount2edit = session['_listeaccount2edit_'] domain2edit = session['_domain2edit_'] request.session['_from_']="Liste:ListeListAccount" try: utenteautorizzato = User.objects.get(pk=userauth) except User.DoesNotExist as dne: return HttpResponseRedirect(reverse('Login:login',args={})) if not domain2edit: domain2edit = utenteautorizzato.domain.id dominio = Domini.objects.get(pk=domain2edit) dominioutenti = User.objects.filter(domain=dominio.id).filter(enabled=1) liste = Liste.objects.get(pk=listeaccount2edit) listelistAccount = ListeAccount.objects.filter(liste_id=listeaccount2edit).order_by('mail__mail') print(f'numero di record trovati: {len(listelistAccount)}') value={} value['utenteautorizzato'] = utenteautorizzato value['user'] = None value['listelist'] = liste.nome value['listelistaccount'] = listelistAccount value['dominio'] = dominio value['dominioutenti'] = dominioutenti value['navbar'] = True print("livello autorizzazione",utenteautorizzato.securitylevel_id) securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id) securityrow = getSecurityRow(utenteautorizzato.securitylevel_id) securitylist = getSecurityList(securityrow) value['securityrow'] = securityrow value['securityrowLen'] = len(securityrow) value['securitylist'] = securitylist # questo mqtt e' quello nuovo mq = mqtt() mq.build('topic','messaggio') mq.build('richiesta','MailingList') mq.build('stampa',True) tmp = dict() tmp['utenteautorizzato'] = "".join((utenteautorizzato.mail,'@',utenteautorizzato.domain.nome)) mq.build('data',tmp) mq.pubblica() tmp=None # mqtt vecchio stampo c = m.start() m.publish(c,"Messaggio/Ml","Accesso alla mailing list di {}".format(utenteautorizzato.nome)) if request.method=="POST": print(request.POST) if "delete" in request.POST: print('id da cancellaree',request.POST['delete']) idpost = request.POST['delete'] u = ListeAccount.objects.get(pk=idpost) u.delete() #u.enainprogress=0 #u.disinprogress=0 #u.delinprogress=1 #u.addinprogress=0 #t = date.today() #u.save() q={} q['op']='unsub' if len(u.esterno): q['us'] = u.esterno else: q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome)) q['us'] = q['us'].lower() q['do']=u.liste.dominio.nome q['ml']=u.liste.nome q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome)) m.publish(c,"Richiesta/Ml",json.dumps(q)) if "disable" in request.POST: print('id da disattivare',request.POST['disable']) idpost = request.POST['disable'] print('ippost disable',idpost) u = ListeAccount.objects.get(pk=idpost) print(u.enabled) u.enabled = False #u.disinprogress= #.enainprogress=0 #.delinprogress=0 #u.addinprogress=0 t = date.today() u.save() q={} q['op']='unsub' if len(u.esterno): q['us'] = u.esterno else: q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome)) q['us'] = q['us'].lower() q['do']=u.liste.dominio.nome q['ml']=u.liste.nome q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome)) m.publish(c,"Richiesta/Ml",json.dumps(q)) if "enable" in request.POST: print('id da attivare',request.POST['enable']) idpost = request.POST['enable'] print('idpost enable',idpost) u = ListeAccount.objects.get(pk=idpost) u.enabled=True #u.disinprogress=0 #u.enainprogress=1 #u.delinprogress=0 #u.addinprogress=0 u.save() q={} q['op']='sub' if len(u.esterno): q['us'] = u.esterno else: q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome)) q['us']=q['us'].lower() q['do']=u.liste.dominio.nome q['ml']=u.liste.nome q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome)) m.publish(c,"Richiesta/Ml",json.dumps(q)) if 'verifica' in request.POST: # verifica che l'account sia effettivamente registrato nella mailing list. print('id da verificare',request.POST['verifica']) idpost = request.POST['verifica'] u = ListeAccount.objects.get(pk=idpost) q=dict() q['op']='check' if len(u.esterno): q['us'] = u.esterno else: q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome)) q['us']=q['us'].lower() q['do']=u.liste.dominio.nome q['ml']=u.liste.nome q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome)) q['au']=q['au'].lower() m.publish(c,"Richiesta/Ml",json.dumps(q)) if 'verificaTutti' in request.POST: print('verificaTutti') # verifica che l'account sia effettivamente registrato nella mailing list. q=dict() q['op']='checkAll' q['do']=liste.dominio.nome q['ml']=liste.nome q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome)) q['au']=q['au'].lower() m.publish(c,"Richiesta/Ml",json.dumps(q)) if 'Ritorno' in request.POST: return HttpResponseRedirect(reverse('Liste:ListeList',args={})) if 'Registra' in request.POST: # verificati i tasti, si passa all'inserimento del record. # abbiamo o la mail scelta dall'elenco, o la mail esterna. f = ListAddAccountForm(request.POST) f.update(dominio.id) if f.is_valid(): u = ListeAccount() u.liste = liste u.mail_id = f.cleaned_data.get('mail_interne') u.esterno = f.cleaned_data.get('mail_esterne') u.enable=True #u.disinprogress=0 #u.enainprogress=0 #u.delinprogress=0 #u.addinprogress=1 try: if int(u.mail_id) > 0 or (len(u.esterno.split("@")) == 2): u.save() except django.db.utils.IntegrityError as ie: print(ie) q={} q['op']='sub' print("u.mail_id",u.mail_id) if int(u.mail_id) > 0: q['us']="".join((u.mail.mail,"@",u.liste.dominio.nome)) else: if len(u.esterno) > 0: splitmail = u.esterno.split('@') if len(splitmail) == 2: q['us'] = "".join((splitmail[0],"@",splitmail[1])) q['do']=u.liste.dominio.nome q['ml']=u.liste.nome q['au']="".join((utenteautorizzato.mail,"@",utenteautorizzato.domain.nome)) if 'us' in q: m.publish(c,"Richiesta/Ml",json.dumps(q)) else: print(f.errors) laaf = ListAddAccountForm() laaf.update(dominio.id) value['laaf'] = laaf print(type(laaf)) value['listelistaccount'] = ListeAccount.objects.filter(liste_id=listeaccount2edit).order_by('id') return render(request,"ListeListAccount.html",value)