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): |