src/hdalab/signals.py
changeset 530 5d3b4e1e5b34
parent 492 19220d52bce7
child 693 09e00f38d177
equal deleted inserted replaced
529:f479d60ca502 530:5d3b4e1e5b34
     3 Created on Mar 8, 2015
     3 Created on Mar 8, 2015
     4 
     4 
     5 @author: ymh
     5 @author: ymh
     6 '''
     6 '''
     7 import logging
     7 import logging
       
     8 import os
       
     9 from renkanmanager.models import Renkan
     8 
    10 
     9 from django.conf import settings
    11 from django.conf import settings
    10 from django.core.mail.message import EmailMultiAlternatives
    12 from django.core.mail.message import EmailMultiAlternatives
    11 from django.db.models.signals import post_save, pre_delete
    13 from django.db.models.signals import post_save, pre_delete
    12 from django.template.base import TemplateDoesNotExist
    14 from django.template.base import TemplateDoesNotExist
    13 from django.template.loader import render_to_string
    15 from django.template.loader import render_to_string
    14 from django.utils.html import strip_tags
    16 import premailer
    15 
    17 
    16 from hdalab.models.renkan import HdalabRenkan, HdalabRenkanStateTransition
    18 from hdalab.models.renkan import HdalabRenkan, HdalabRenkanStateTransition
    17 from renkanmanager.models import Renkan
       
    18 
    19 
    19 
    20 
    20 logger = logging.getLogger(__name__)
    21 logger = logging.getLogger(__name__)
    21 
    22 
    22 MAIL_TEMPLATES = {
    23 MAIL_TEMPLATES = {
    23     (HdalabRenkan.MODERATED,HdalabRenkan.PUBLISHED): ("mails/published_renkan", "Renkan publié"),
    24     (HdalabRenkan.MODERATED,HdalabRenkan.PUBLISHED): ("mails/published_renkan", "Renkan publié"),
    24     (HdalabRenkan.MODERATED,HdalabRenkan.REJECTED): ("mails/rejected_renkan", "Renkan rejeté"),
    25     (HdalabRenkan.MODERATED,HdalabRenkan.REJECTED): ("mails/rejected_renkan", "Renkan rejeté"),
    25     (HdalabRenkan.PUBLISHED, HdalabRenkan.EDITION): ("mails/unpublished_renkan", "Renkan dépublié"),
    26     (HdalabRenkan.PUBLISHED, HdalabRenkan.EDITION): ("mails/unpublished_renkan", "Renkan dépublié"),
       
    27     (HdalabRenkan.PUBLISHED, HdalabRenkan.REJECTED): ("mails/rejected_renkan", "Renkan rejeté"),
    26 }
    28 }
    27 
    29 
    28 
    30 
    29 #TODO put into queue
    31 #TODO put into queue
    30 def send_renkan_moderation_messages(sender, **kwargs):
    32 def send_renkan_moderation_messages(sender, **kwargs):
    38     subject = ""
    40     subject = ""
    39     try:
    41     try:
    40         template_name, subject = MAIL_TEMPLATES[template_key]
    42         template_name, subject = MAIL_TEMPLATES[template_key]
    41 #        template = loader.get_template(template_name)
    43 #        template = loader.get_template(template_name)
    42         context = {'renkan_state': renkan_state, 'WEB_URL': settings.WEB_URL}
    44         context = {'renkan_state': renkan_state, 'WEB_URL': settings.WEB_URL}
    43         msg_html = render_to_string(template_name+".txt", context)
    45         msg_html = premailer.transform(render_to_string(template_name+".html", context), base_url=os.path.join(settings.STATIC_ROOT,'site'))
    44         msg_txt = render_to_string(template_name+".html", context)
    46         msg_txt = render_to_string(template_name+".txt", context)
    45     except TemplateDoesNotExist:
    47     except TemplateDoesNotExist:
    46         logger.error("Mail template %s for state %s not found", MAIL_TEMPLATES[template_key], HdalabRenkan.STATE_CHOICES_DICT[renkan_state.to_state])
    48         logger.error("Mail template %s for state %s not found", MAIL_TEMPLATES[template_key], HdalabRenkan.STATE_CHOICES_DICT[renkan_state.to_state])
    47         return
    49         return
    48     except Exception as e:
    50 #    except Exception as e:
    49         logger.error("Error rendering template %s for state %s : %r", MAIL_TEMPLATES[template_key], HdalabRenkan.STATE_CHOICES_DICT[renkan_state.to_state], e)
    51 #        logger.error("Error rendering template %s for state %s : %r", MAIL_TEMPLATES[template_key], HdalabRenkan.STATE_CHOICES_DICT[renkan_state.to_state], e)
       
    52 #        return
       
    53 #        raise e
    50     
    54     
    51     if msg_txt and msg_html and renkan_state.renkan and renkan_state.renkan.renkan and renkan_state.renkan.renkan.owner and renkan_state.renkan.renkan.owner.email:
    55     if msg_txt and msg_html and renkan_state.renkan and renkan_state.renkan.renkan and renkan_state.renkan.renkan.owner and renkan_state.renkan.renkan.owner.email:
    52         logger.debug("Sending following mail to %s : %s", renkan_state.renkan.renkan.owner.email, msg_txt)
    56         logger.debug("Sending following mail to %s : %s", renkan_state.renkan.renkan.owner.email, msg_txt)
    53         emsg = EmailMultiAlternatives(subject, strip_tags(msg_txt), settings.DEFAULT_FROM_EMAIL, [renkan_state.renkan.renkan.owner.email])
    57         emsg = EmailMultiAlternatives(subject, msg_txt, settings.DEFAULT_FROM_EMAIL, [renkan_state.renkan.renkan.owner.email])
    54         emsg.attach_alternative(msg_html, "text/html")
    58         emsg.attach_alternative(msg_html, "text/html")
    55         emsg.send(fail_silently=True)
    59         emsg.send(fail_silently=True)
    56 
    60 
    57 
    61 
    58 def queue_renkan_rendering(sender, **kwargs):
    62 def queue_renkan_rendering(sender, **kwargs):