Browse Source

1: modificate alcune voci di default.Cambiato nome e riorganizzate
logicamente

mauro 1 month ago
parent
commit
d8a1a5629e

+ 20 - 4
comunicazioni/views.py

@@ -207,7 +207,7 @@ def ControlloScadenzeRegistrar(request,demo=0,dominio=0):
     print(template.nome)
 
     listadestinatari=[]
-    listadestinatari.append(getConfigurazione('mail_notification'))
+    listadestinatari.append(getConfigurazione('mail:notifica'))
 
     dictdict={} 
     dictdict['domini'] = i.__dict__
@@ -1022,7 +1022,6 @@ def OccupazioneControlloQuota(request,dominio=None):
     domini = Domini.objects.all().filter(tobedeleted=False)
   else:
     print('dominio richiesto:',dominio)
-
     domini = Domini.objects.filter(pk=dominio)
 
   mq = mqtt()
@@ -1030,6 +1029,8 @@ def OccupazioneControlloQuota(request,dominio=None):
   mq.build('richiesta','quota')
   mq.build('stampa',True)
 
+  counter = 0 #conteggio del numero di record da inviare e di cui tener presente.
+
   tmp = dict()
   tmp['dtask'] = dtask
   tmpdom = list()
@@ -1038,6 +1039,7 @@ def OccupazioneControlloQuota(request,dominio=None):
   tmp['domini'] = tmpdom
   mq.build('data',tmp)
   mq.pubblica()
+
   tmp=None
   tmpdom=None
 
@@ -1066,6 +1068,7 @@ def OccupazioneControlloQuota(request,dominio=None):
       ftpdict['dtask'] = dtask
       ftpdict['stampa']=True
       print('ftp id',lf.id,'counter',dc,'dtask',dtask)
+      counter += 1
       try:
         #print('ftpgroup',lf.ftpgroup.id)
         #construisce la stringa che deve essere inviata via mqtt
@@ -1098,6 +1101,7 @@ def OccupazioneControlloQuota(request,dominio=None):
       dc = dc +1
       maildict['dc'] = dc
       maildict['dtask'] = dtask
+      counter += 1
       try:
         maildict['mailserver'] = lm.mail_server.fisico
       except MailServer.DoesNotExist as dne:
@@ -1112,14 +1116,26 @@ def OccupazioneControlloQuota(request,dominio=None):
         print('richiesta diretta a tutti i server',lf.id)
         m.publish(c,"Richiesta/Quota/Mail",json.dumps(maildict))
       print("json json",json.dumps(maildict))
-       
+  
+      # aggiornamento 09.09.25
+      # faccio sempre fare la somma in una fase successiva, ma anziche menttere a zero il valore e attendere, per
+      # male che va, utilizzo il valore gia' presente.
+      '''
       u = User.objects.get(pk=lm.id)
       u.mail_quota=0
       u.save()
+      '''
 
+    '''
     dominio.mail_quota=0
     dominio.save()
-    
+    '''
+
+  mq.topic('coda')
+  mq.struttura['msg_total']=counter
+  mq.messaggio('invio totale messaggi')
+  mq.pubblica()
+   
   value['domini'] = listadomini
   print('value',value)
 

+ 3 - 0
domini/forms.py

@@ -110,6 +110,9 @@ class FormDomainEdit(forms.Form):
     self.fields['edit'] = forms.BooleanField(required=False)
     self.fields['rinnovo_automatico'] = forms.BooleanField(required=False)
 
+    self.fields['notifica_mail_domain_admin'] = forms.BooleanField(required=False)
+    self.fields['notifica_mail_domain_user'] = forms.BooleanField(required=False)
+
 class FormDomainCausale(forms.Form):
   def __init__(self,*args,**kwargs):
     forms.Form.__init__(self,*args,**kwargs)

+ 4 - 0
domini/models.py

@@ -138,6 +138,10 @@ class Domini(models.Model):
   # per le attivita' via mqtt
   checkstatus = models.BooleanField(db_column='checkstatus',default=False)
 
+  # notifiche varie
+  notifica_mail_domain_admin = models.BooleanField(db_column='notifica_mail_domain_admin')
+  notifica_mail_domain_user = models.BooleanField(db_column='notifica_mail_domain_user')
+
 
   class Meta:
     ordering = ['id']

+ 34 - 0
domini/templates/gestione.domain.edit.html

@@ -365,6 +365,7 @@
       <input type='test' class='form-control' id='list_used' name='list_used' value="{{ domainedit.list_used.value }}" readonly>
     </div>
   </div>
+
   <hr>
 
   Quote utilizzate (I valori sono espressi in Mega)
@@ -394,6 +395,25 @@
      <input type='text' class='form-control' id='Totale' name='totale' value='{{ totale|intcomma }}M' readonly>
     </div>
  </div>
+  <div class='row'>
+    <div class='col'>
+      <input type='text' class='form-control' id='mail_quota' name='mail_quota' value='{{ dominio.date_mail_quota }}' readonly>
+    </div>
+    <div class='col'>
+      <input type='Text' class='form-control' id='http_quota' name='http_quota' value='{{ dominio.date_http_quota }}' readonly>
+    </div>
+    <div class='col'>
+      <input type='Text' class='form-control' id='ftp_quota' name='ftp_quota'value='{{ dominio.date_ftp_quota }}' readonly>
+    </div>
+    <div class='col'>
+	    <!--<input type='Text' class='form-control' id='http_quota' name='sql_quota' value='{{ dominio.date_sql_quota }}' readonly>-->
+    </div>
+    <div class='col'>
+	    <!--<input type='text' class='form-control' id='Nextcloud_quota' name='nextcloud_quota' value='{{ dominio.date_nextcloud_quota }}' readonly>-->
+    </div>
+    <div class='col'>
+    </div>
+ </div>
 
   <hr>
 
@@ -415,6 +435,19 @@
       <input type='checkbox' class='form-check-input' id='force_update_mail_quota' name='force_update_mail_quota' {% if domainedit.force_update_mail_quota.value %} checked {% endif %}>
     </div>
   </div>
+
+  <hr>
+
+  <div class='row form-group'>
+    <div class='col'>
+      <label class='form-check-label' for='notifica_mail_domain_admin'>Notifica attivita' di dominio all'amministratore</label>
+      <input type='checkbox' class='form-check-input' id='notifica_mail_domain_admin' name='notifica_mail_domain_admin' {% if domainedit.notifica_mail_domain_admin.value %} checked {% endif %}>
+    </div>
+    <div class='col'>
+      <label class='form-check-label' for='notifica_mail_domain_user'>Notifica attivita' di dominio all'utente interessato</label>
+      <input type='checkbox' class='form-check-input' id='notifica_mail_domain_user' name='notifica_mail_domain_user' {% if domainedit.notifica_mail_domain_user.value %} checked {% endif %}>
+    </div>
+  </div>
   <hr>
 
     {% if ftplist %}
@@ -478,6 +511,7 @@
   </div>
 
   <hr>
+
   <div class='btn-group' role='group' aria-label='conferme'>
     <button type='submit' class='btn btn-primary active'>Conferma</button>
     <button type='reset' class='btn btn-secondary'>Reset</button>

+ 36 - 3
domini/templates/gestione.domain.show.html

@@ -172,9 +172,25 @@
      <input type='text' class='form-control' id='totale' name='totale' value='{{ totale|intcomma }}M' readonly>
     </div>
   </div>
-  <div>
- 
-  
+  <div class='row'>
+    <div class='col'>
+      <input type='text' class='form-control' id='mail_quota' name='mail_quota' value='{{ dominio.date_mail_quota }}' readonly>
+    </div>
+    <div class='col'>
+      <input type='Text' class='form-control' id='http_quota' name='http_quota' value='{{ dominio.date_http_quota }}' readonly>
+    </div>
+    <div class='col'>
+      <input type='Text' class='form-control' id='ftp_quota' name='ftp_quota'value='{{ dominio.date_ftp_quota }}' readonly>
+    </div>
+    <div class='col'>
+	    <!--<input type='Text' class='form-control' id='http_quota' name='sql_quota' value='{{ dominio.date_sql_quota }}' readonly>-->
+    </div>
+    <div class='col'>
+	    <!--<input type='text' class='form-control' id='Nextcloud_quota' name='nextcloud_quota' value='{{ dominio.date_nextcloud_quota }}' readonly>-->
+    </div>
+    <div class='col'>
+    </div>
+  </div>
   <div class='row'>
     <div class='col text-center'>
       <label for='warning_mail_quota'>Quota Allarme per Utente</label>
@@ -194,6 +210,20 @@
     </div>
   </div>
   <hr>
+
+    <div class='row form-group'>
+    <div class='col'>
+      <label class='form-check-label' for='notifica_mail_domain_admin'>Notifica attivita' di dominio all'amministratore</label>
+      <input type='checkbox' class='form-check-input' id='notifica_mail_domain_admin' name='notifica_mail_domain_admin' {% if domainedit.notifica_mail_domain_admin.value %} checked {% endif %} readonly>
+    </div>
+    <div class='col'>
+      <label class='form-check-label' for='notifica_mail_domain_user'>Notifica attivita' di dominio all'utente interessato</label>
+      <input type='checkbox' class='form-check-input' id='notifica_mail_domain_user' name='notifica_mail_domain_user' {% if domainedit.notifica_mail_domain_user.value %} checked {% endif %} readonly>
+    </div>
+  </div>
+
+  <hr>
+  Assegnazioni FTP:<br>
   {% if ftplist %}
     Spazio FTP assegnato
     <table class='table table-striped table-hover'>
@@ -216,7 +246,10 @@
     {% endfor %}
     </tbody>
   </table>
+  {% else %}
+  Non ci sono assegnazioni FTP
   {% endif %}
+
   <hr>
   {% if 'DOMNIEDITDOMAIN' in securitylist %}
  <div class='row'>

+ 10 - 6
domini/views.py

@@ -329,12 +329,12 @@ def DomainEdit(request):
   if domain2edit == -1:
     dominio = Domini();
     # possiamo assegnare i default.
-    dominio.max_account = getConfigurazione('domini.default_maxaccount')
-    dominio.max_alias = getConfigurazione('domini.default.max_alias')
-    dominio.max_list = getConfigurazione('domini.default.list')
+    dominio.max_account = getConfigurazione('dominio:default:maxaccount')
+    dominio.max_alias = getConfigurazione('dominio:default:maxalias')
+    dominio.max_list = getConfigurazione('dominio:default:maxlist')
     dominio.public_email = getConfigurazione('domini:public_email')
-    dominio.target = Target.objects.get(id=getConfigurazione('domini.default.target'))
-    dominio.maildir = getConfigurazione('domini.default.maildir')
+    dominio.target = Target.objects.get(id=getConfigurazione('dominio:default:target'))
+    dominio.maildir = getConfigurazione('dominio:default:maildir')
     dominio.edit = True; #fondamentale per consentire la prima compilazione
     dominio.tobedeleted = False
     dominio.rinnovo_automatico = False
@@ -549,6 +549,9 @@ def DomainEdit(request):
       dominio.rinnovo_automatico = domainedit.cleaned_data.get('rinnovo_automatico')
       dominio.target_id = domainedit.cleaned_data.get('target')
 
+      dominio.notifica_mail_domain_admin = domainedit.cleaned_data.get('notifica_mail_domain_admin')
+      dominio.notifica_mail_domain_user = domainedit.cleaned_data.get('notifica_mail_domain_user')
+
       if not dominio.edit:
          dominio.edit = domainedit.cleaned_data.get('edit')
       else: 
@@ -621,7 +624,8 @@ def DomainEdit(request):
   t['http'] = dominio.http
   t['proxy'] = dominio.proxy
   t['edit'] = dominio.edit
-
+  t['notifica_mail_domain_admin'] = dominio.notifica_mail_domain_admin
+  t['notifica_mail_domain_user'] = dominio.notifica_mail_domain_user
   try:
     t['dominio_storia'] = dominio.storia_set.all()
   except ValueError as ve:

+ 4 - 2
logger/views.py

@@ -2,9 +2,10 @@ from django.shortcuts import render
 from .models import *
 
 import time
+from comunicazioni.views import *
+
 #from supporto import managepassword
 #from sicurezza.views import *
-from comunicazioni.views import *
 #from datetime import date
 #from configurazione.views import *
 
@@ -23,9 +24,10 @@ def registra(utente,template=0,nota={}):
   '''
 
   sm = ServizioMail()
+
   mail_utente = [] #vediamo la lista utente
   mail_utente.append('{}@{}'.format(utente.mail.strip(),utente.domain.nome.strip()))
-  mail_utente.append(getConfigurazione('mail_notification'))
+  mail_utente.append(getConfigurazione('mail:notifica'))
 
   #recuperiamo il template
   template = Template.objects.get(pk=template)

+ 1 - 1
login/views.py

@@ -103,7 +103,7 @@ def login(request):
           #invia la notifica all'amministratore.
           # le email sono le stesse, cambia il template in modo da inviare notifiche diversificate
           #sm = ServizioMail()
-          #sm.set_rcptto([getConfigurazione('mail_notification'),])
+          #sm.set_rcptto([getConfigurazione('mail:notifica'),])
           #template=Template.objects.get(pk=getConfigurazione("AccessoPannello:admin"))
           #sm.set_oggetto(template.oggetto)
           #sm.set_soggetto(template.soggetto)

+ 4 - 4
mqtt/views.py

@@ -40,7 +40,7 @@ class mqtt(object):
     self.struttura['nota'] = ''
     self.struttura['clear'] = '' #rimuove i dati inviati se non servono ulteriori elaborazioni
     self.struttura['seriale'] = '' #il contenuto di data e' serializzato
-    self.struttura['numero'] = 0 #conta quanti record vanno elaborati
+    self.struttura['msg_total'] = 0 #conta quanti record vanno elaborati
     self.struttura['notifica_numero'] = False #invia notifica se il numero corrisponde alle lavorazioni
   
     # messaggio viene inviato se tutto e' Tru
@@ -55,7 +55,7 @@ class mqtt(object):
     self.check['nota'] = False
     self.check['clear'] = False
     self.check['seriale'] = False
-    self.check['numero'] = 0
+    self.check['msg_total'] = 0
     self.check['notifica_numero'] = False
 
   def login(self):
@@ -92,11 +92,11 @@ class mqtt(object):
     j = None
     if struttura:
       if 'data' in struttura:
-        struttura['numero'] = len(struttura['data'])
+        struttura['msg_total'] = len(struttura['data'])
       j = json.dumps(struttura)
     else:
       if 'data' in self.struttura:
-        self.struttura['numero'] = len(self.struttura['data'])
+        self.struttura['msg_total'] = len(self.struttura['data'])
       j = json.dumps(self.struttura)
    
     print('modulo mqtt')

+ 1 - 0
utenti/forms.py

@@ -61,6 +61,7 @@ class formEmail(forms.Form):
     self.fields['blacklist'] = forms.BooleanField(required=False,initial=1)
     self.fields['spf'] = forms.BooleanField(required=False,initial=1)
     self.fields['mail_quota'] = forms.IntegerField(required=False,initial=1)
+    self.fields['date_mail_quota'] =  forms.DateField(required=False,initial=0)
     self.fields['forward'] = forms.CharField(required=False,initial="")
 
   def clean_password1(self):

+ 3 - 2
utenti/models.py

@@ -35,8 +35,8 @@ class User(models.Model):
 
   tobedeleted = models.BooleanField(db_column='tobedeleted',default=False)
 
-  #quota = models.IntegerField(db_column='mail_quota',default=0)
   mail_quota = models.IntegerField(db_column='mail_quota',default=0)
+  date_mail_quota = models.DateField(db_column='date_mail_quota',blank=True)
 
   nextcloud_quota = models.IntegerField(db_column='nextcloud_quota',default=0)
   date_nextcloud_quota = models.DateField(db_column='date_nextcloud_quota',blank=True)
@@ -47,7 +47,8 @@ class User(models.Model):
   sms_communication = models.CharField(db_column='sms_communication',blank=True,max_length=128)
 
   nota = models.TextField(db_column='nota',blank=True)
-  
+ 
+  # rimosso 09.09.25. sostituito da mail_date_quota
   last_mail_checked = models.DateField(db_column='last_mail_checked')
 
   #proxy_host viene usato per forware le sessioni imap.

+ 5 - 11
utenti/templates/Utente.Edit.html

@@ -161,16 +161,10 @@
     </div>
     {% endif %}
 
-    {% if 'USERSHOWPASSWORD' in securitylist %}
-      <div class='col'>
-        <label for='sendInfoToAdmin'>Invia Info ad Admin</label>
-	<button type='submit' class='form-control btn btn-secondary' name='sendInfoToAdmin' id='sendInfoToAdmin' >Invia</button>
-      </div>
-    {% endif %}
-      <div class='col'>
-        <label for='sendInfoToMe'>Invia Info a me</label>
-	<button type='submit' class='form-control btn btn-secondary' name='sendInfoToMe' id='sendInfoToMe' >Invia</button>
-      </div>
+    <div class='col'>
+      <label for='sendInfoToMe'>Invia Info a me</label>
+      <button type='submit' class='form-control btn btn-secondary' name='sendInfoToMe' id='sendInfoToMe' >Invia</button>
+    </div>
 
   </div>
 
@@ -365,7 +359,7 @@
     <p></p>
     <div class='row'>
       <div class='col'>
-        <label for='quota'>Quota (in Mb):</label>
+	      <label for='quota'>Quota (in Mb) al {{ formemail.date_mail_quota.value }}:</label>
         <input type='text' class='form-control' id='mail_quota' name='mail_quota' value='{{ formemail.mail_quota.value }}' placeholder='0' readonly=''>
       </div>
       <div class='col'>

+ 1 - 1
utenti/templates/Utente.List.html

@@ -45,7 +45,7 @@
 	<button class='btn btn-primary' type='button' data-toggle='modal' data-target='#ConfirmEnableDisable{{ u.id }}' name='enabledisablebutton' value='{{ u.id }}' {% if u.tobedeleted %} disabled {% endif %}> {% if u.enabled %}Disabilita{% else %}Abilita{% endif %}</button>
 	    <button class='btn btn-primary' type='submit' name='enablepassword' value='{{ u.id }}' {% if u.enabled %} disabled {% endif %}{% if u.tobedeleted %} disabled {% endif %}>abilita & nuova Pass</button>
 	    <button class='btn btn-primary' data-toggle='modal' data-target='#ConfirmToBeDeleted{{ u.id }}' type='button' name='tobedeletedbutton' value='{{ u.id }}' {% if u.enabled %} disabled {% endif %}>{% if u.tobedeleted %}In Cancellazione{% else %}Da Rimuovere{% endif %}</button>
-	<button type='submit' class='btn btn-primary' name='sendInfoToAdmin' id='sendInfoToAdmin' value='{{ u.id }}' >Info ad Admin</button>
+	<button type='submit' class='btn btn-primary' name='sendInfoToMe' id='sendInfoToMe' value='{{ u.id }}' >Info a Me</button>
 	</td>
 	<td> {{ u.mail_server.id }}: {{ u.mail_server.nome }}</td>
 	

+ 19 - 24
utenti/views.py

@@ -106,11 +106,13 @@ def UserList(request):
       u = User.objects.get(pk=idpost)
       u.tobedeleted = not u.tobedeleted
       u.save()
-  
-    if 'sendInfoToAdmin' in request.POST:
+ 
+    # invia le info sull'email all'utente autorizzato all'editing
+    # le info vengono ottenute da quanto contenuto nel record
+    if 'sendInfoToMe' in request.POST:
       print('richista informazioni mail')
       sm = ServizioMail()
-      idpost = request.POST['sendInfoToAdmin']
+      idpost = request.POST['sendInfoToMe']
       record = User.objects.get(pk=idpost)
       print(record.nome)
       sm.set_rcptto(r'{}@{}'.format(utenteautorizzato.mail.strip(),utenteautorizzato.domain.nome.strip()))
@@ -127,6 +129,7 @@ def UserList(request):
     if 'ritorno' in request.POST:
       return HttpResponseRedirect(reverse('Login:welcome',args={}))
 
+    # cazz'e' sta sezione?
     if 'notaSubmit' in request.POST:
       fm = formMsg(request.POST)
       if fm.is_valid():
@@ -326,22 +329,7 @@ def UserEdit(request):
       buildemail(getConfigurazione('mail_from'),["{}@{}".format(record.mail,record.domain.nome)],'mail_test_subject','mail_test_body_html','mail_test_body_text',{'domain':record.domain.nome,'mail':record.mail})
 
     if 'sendInfoToMe' in request.POST:
-      print('richeista informazioni mail')
-      sm = ServizioMail()
-      sm.set_rcptto(r'{}@{}'.format(record.mail.strip(),record.domain.nome.strip()))
-      template=Template.objects.get(pk=getConfigurazione("mail:info:info"))
-      sm.set_oggetto(template.oggetto)
-      sm.set_soggetto(template.soggetto)
-      dictdict={}
-      dictdict['utente'] = record
-      dictdict['utenteautorizzato'] = utenteautorizzato
-      dictdict['precedente_password'] = oldpassword
-      dictdict['data'] = datetime.now()
-      sm.set_data(dictdict)
-      sm.send() 
-
-    if 'sendInfoToAdmin' in request.POST:
-      print('richeista informazioni mail')
+      print('richiesta informazioni mail')
       sm = ServizioMail()
       sm.set_rcptto(r'{}@{}'.format(utenteautorizzato.mail.strip(),utenteautorizzato.domain.nome.strip()))
       template=Template.objects.get(pk=getConfigurazione("mail:info:info"))
@@ -350,6 +338,7 @@ def UserEdit(request):
       dictdict={}
       dictdict['utente'] = record
       dictdict['utenteautorizzato'] = utenteautorizzato
+      dictdict['precedente_password'] = oldpassword
       dictdict['data'] = datetime.now()
       sm.set_data(dictdict)
       sm.send() 
@@ -506,12 +495,16 @@ def UserEdit(request):
       if nuovorecord:
         print('generato nuovo record')
         sm = ServizioMail()
+        # inserisce la mail dell'utente appena creato
         sm.set_rcptto(r'{}@{}'.format(record.mail.strip(),record.domain.nome.strip()))
-        sm.add_to(re.findall("[\w\.-_]+@[\w\.]+",getConfigurazione('mail_notification')))
-        #if utenteautorizzato.id == record.id:
+        # viene inviata una notifica anche all'utente supremo/assoluto
+        sm.add_to(re.findall("[\w\.-_]+@[\w\.]+",getConfigurazione('mail:notifica')))
+        #aggiunge l'utente autorizzato all'editing (tipicamenteo l'amministratore del dominio)
         sm.add_to(utenteautorizzato.mail + "@" + utenteautorizzato.domain.nome)
+        # se presente, aggiunge anche la nota all'utente indicato nel campo (Invia credenziali a)
         if mail_who:
           sm.add_to(re.findall("[\w\.-_]+@[\w\.]+",mail_who))
+
         template=Template.objects.get(pk=getConfigurazione("mail:info:account"))
         sm.set_oggetto(template.oggetto)
         sm.set_soggetto(template.soggetto)
@@ -526,9 +519,11 @@ def UserEdit(request):
         if record.password_change_enabled and oldpassword != record.clear:
           print('richiesto aggiornamento password')
           sm = ServizioMail()
+          # invia la mail all'utente in fase di editing
           sm.set_rcptto(r'{}@{}'.format(record.mail.strip(),record.domain.nome.strip()))
-          sm.add_to(re.findall("[\w\.-_]+@[\w\.]+",getConfigurazione('mail_notification')))
-          #if utenteautorizzato.id == record.id:
+          # invia la mail agli utenti di notifica indicati nella configurazione
+          sm.add_to(re.findall("[\w\.-_]+@[\w\.]+",getConfigurazione('mail:notifica')))
+          # infine  viene aggiunta una mail all'utente autorizzato per l'editing
           sm.add_to(utenteautorizzato.mail + "@" + utenteautorizzato.domain.nome)
           if mail_who:
             sm.add_to(re.findall("[\w\.-_]+@[\w\.]+",mail_who))
@@ -624,11 +619,11 @@ def UserEdit(request):
     temp['sendafile'] = record.sendafile
     temp['tobedeleted'] = record.tobedeleted
     temp['mail_quota'] = record.mail_quota
+    temp['date_mail_quota'] = record.date_mail_quota
     temp['accountdatecreation'] = record.account_date_creation
     temp['accountdatedisabled'] = record.account_date_disabled
     temp['sms_communication'] = record.sms_communication
     temp['nota'] = record.nota
-    temp['last_mail_checked'] = record.last_mail_checked
     temp['proxy_host'] = record.proxy_host
     #temp['bigmail'] = record.bigmail
     temp['mail_di_recupero'] = record.mail_di_recupero