Kaynağa Gözat

configurata spedizione mail, quando un amministratore fa login, viene inviata una notifica

Mauro 1 yıl önce
ebeveyn
işleme
908174ecf8
3 değiştirilmiş dosya ile 63 ekleme ve 31 silme
  1. 43 30
      comunicazione/views.py
  2. 1 0
      login/models.py
  3. 19 1
      login/views.py

+ 43 - 30
comunicazione/views.py

@@ -45,16 +45,19 @@ def template_from_string(template_string, using=None):
 
 class ServizioMail:
   def __init__(self,debug=False):
-    self._from_ = getConfigurazione('default_mail_from')
+    self._from_ = getConfig('DefaultEmail')
     self._to_ = []
     self._to = {}
     self.debug = debug
     self.soggetto = ""
+    self.corpo = ""
     self.corpo_testo = ""
     self.corpo_html = ""
-    self.set_data()
+    self.data = dict()
     self.json = None
 
+    if self.debug: print('attivato flag di debug')
+
   def set_mailfrom(self,mail_from):
     self._from_ = mail_from
     if self.debug: print('mail_from',self._from_)
@@ -82,68 +85,78 @@ class ServizioMail:
 
   def set_soggetto(self,soggetto=""):
     self.soggetto = soggetto
+    if self.debug: 
+      print("########")
+      print('soggetto:',self.soggetto)
+      print("########")
+
+  def set_corpo(self,corpo="",html=False):
+    self.corpo = corpo
+    if self.debug:
+      print("########")
+      print('corpo:',self.corpo)
+      print('set_corpo html:',html)
+      print("########")
 
-  def set_oggetto(self,oggetto="",html=False):
-    self.oggetto = oggetto
-    if self.debug: print('set_oggetto html:',html)
     self.html = html
 
   def set_data(self,data={}):
     self.data = data
 
     if not 'ora_data' in self.data:
-      self.data['ora_data'] = datetime.now.strftime('%H:%M %d/%m/%Y')
+      self.data['ora_data'] = datetime.now().strftime('%H:%M %d/%m/%Y')
     if not 'ora' in self.data:
-      self.data['ora'] = datetime.now.strftime('%H:%m')
+      self.data['ora'] = datetime.now().strftime('%H:%m')
     if not 'data' in self.data:
-      self.data['data'] = datetime.now.strftime('%d/%m/%Y')
+      self.data['data'] = datetime.now().strftime('%d/%m/%Y')
 
     if self.debug: print('data',self.data)
 
   def set_json(self,data={}):
     self.json = json.dumps(data)
     if self.debug:  print('json:',self.json)
-  def send(self):
 
+  def send(self):
     # normalizza i destinatari (uno solo, non ripetuti)
-    if self.debug: print('self._to_',self._to_)
+    if self.debug: print('spedisco a:',self._to_)
 
     for i in self._to_:
       self._to[i] = i
  
     self._to_complete = [ x for x in self._to.values() ]
-    if self.debug: print("destinatari:",self._to_complete)
+    if self.debug: print("destinatari tutti:",self._to_complete)
  
     #rendering del soggetto
     soggetto = template_from_string(self.soggetto)
     soggetto_render = soggetto.render(self.data)
+    print('soggetto_render:',soggetto_render)
 
     if self.debug: print("soggetto",soggetto)
 
-    oggetto = template_from_string(self.oggetto)
-    oggetto_render = None
+    corpo = template_from_string(self.corpo)
+    corpo_render = None
     try:
-      oggetto_render = oggetto.render(self.data)
+      corpo_render = corpo.render(self.data)
+      print('corpo_render:',corpo_render)
     except TemplateSyntaxError as tse:
       print('Errore nel Template')
       print(tse)
 
-    if oggetto_render:
-      if self.debug: print('oggetto render',oggetto_render)
-
-      for tt in self._to_complete:
-        ttl = [tt,]
-        msg = None
-        if self.debug: print('richiesta html::',self.html)
-        if self.html: 
-          msg=EmailMultiAlternatives(soggetto_render, oggetto_render, self._from_, ttl)
-          msg.attach_alternative(oggetto_render, "text/html")
-        else: msg=EmailMultiAlternatives(soggetto_render, oggetto_render, self._from_, ttl)
-
-        if self.json:
-          msg.attach_alternative(self.json,'text/json')
-
-        msg.send()
+    print('quanti sono',len(self._to_complete))
+    for tt in self._to_complete:
+      ttl = [tt,]
+      print('ttl',ttl,)
+      msg = None
+      if self.debug: print('richiesta html::',self.html)
+      if self.html: 
+        msg=EmailMultiAlternatives(soggetto_render, corpo_render, self._from_, ttl)
+        msg.attach_alternative(corpo_render, "text/html")
+      else: msg=EmailMultiAlternatives(soggetto_render, corpo_render, self._from_, ttl)
+
+      if self.json:
+        msg.attach_alternative(self.json,'text/json')
+
+      msg.send()
 
 def welcome(request):
   '''

+ 1 - 0
login/models.py

@@ -1,3 +1,4 @@
 from django.db import models
 
 # Create your models here.
+from comunicazione.models import *

+ 19 - 1
login/views.py

@@ -3,6 +3,8 @@ from django.http import HttpResponse,HttpResponseRedirect,FileResponse
 from django.urls import reverse
 from .forms import *
 from config.views import getConfig
+from comunicazione.views import ServizioMail
+
 from utente.models import *
 from django.contrib.auth import authenticate
 import django
@@ -48,6 +50,7 @@ def start(request):
           return HttpResponseRedirect(reverse("utente:download"))
       else: # l'utente ordinario non esiste
         print('verifica amministratore')
+        
         user = authenticate(username=username.strip().lower(),password=pin.strip())
         if user:
           if isinstance(user,django.contrib.auth.models.User): 
@@ -55,7 +58,22 @@ def start(request):
 
           request.session['AdminId'] = user.id
           setLog(1,amministratore=user)
-          #setNewLog(2,{'a':user.username})
+
+          ### comunicazioni ###
+          sm = ServizioMail(debug=True)
+          comunicazione = Comunicazione.objects.get(pk=1)
+          sm.set_mailfrom=comunicazione.mittente
+          sm.add_to(user.email)
+
+          sm.set_soggetto(comunicazione.soggetto)
+          sm.set_corpo(comunicazione.corpo)
+
+          sm_data = dict()
+          sm_data['user'] = user
+          sm.set_data(sm_data)
+          sm.send()
+          ### comunicazioni ###
+
           return HttpResponseRedirect(reverse("azienda:welcome"))
   else:
     temp={}