Changeset 1177 in main


Ignore:
Timestamp:
06/06/12 10:22:55 (7 years ago)
Author:
zali
Message:

User sponsor : mail(text/html) translated in the language set for each recipient

Location:
trunk/openPLM/plmapp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/plmapp/csvimport.py

    r1176 r1177  
    409409        if form.is_valid(): 
    410410            new_user = form.save() 
     411            new_user.get_profile().language = form.cleaned_data["language"] 
    411412            self.ctrl.sponsor(new_user) 
    412413            self.objects.append(new_user) 
  • trunk/openPLM/plmapp/mail.py

    r1175 r1177  
    3232 
    3333from django.conf import settings 
     34from django.utils import translation 
    3435from django.core.mail import EmailMultiAlternatives 
    3536from django.db.models import Model, Q 
     
    165166def do_send_mail(subject, recipients, ctx, template, blacklist=()): 
    166167    if recipients: 
     168        from collections import defaultdict 
     169        lang_to_email = defaultdict(set) 
    167170        if len(recipients) == 1: 
    168             email = User.objects.get(id=recipients.pop()).email 
    169             if not email or email in blacklist: 
     171            recipient = User.objects.get(id=recipients.pop()) 
     172            if not recipient.email or recipient.email in blacklist: 
    170173                return 
    171             emails = (email,) 
     174            lang_to_email[recipient.get_profile().language].add(recipient.email) 
    172175        else: 
    173             emails = User.objects.filter(id__in=recipients).exclude(email="")\ 
    174                             .values_list("email", flat=True) 
    175             emails = set(emails) - set(blacklist) 
    176             if not emails: 
    177                 return 
     176            users = User.objects.filter(id__in=recipients).exclude(email="") 
     177            for user in users: 
     178                if not user.email in blacklist: 
     179                    lang_to_email[user.get_profile().language].add(user.email) 
     180            if not lang_to_email: 
     181                return     
     182             
    178183        ctx = unserialize(ctx) 
    179184        ctx["site"] = Site.objects.get_current() 
    180         html_content =render_to_string(template + ".html", ctx) 
    181         message = render_to_string(template + ".txt", ctx) 
    182         msg = EmailMultiAlternatives(subject, message, settings.EMAIL_OPENPLM, 
    183             emails) 
    184         msg.attach_alternative(html_content, "text/html") 
    185         msg.send(fail_silently=True) 
     185 
     186        for lang, emails in lang_to_email.items(): 
     187            translation.activate(lang) 
     188            html_content = translation.gettext(render_to_string(template + ".html", ctx)) 
     189            message = translation.gettext(render_to_string(template + ".txt", ctx)) 
     190            msg = EmailMultiAlternatives(subject, message, settings.EMAIL_OPENPLM, 
     191                emails) 
     192            msg.attach_alternative(html_content, "text/html") 
     193            msg.send(fail_silently=True) 
    186194 
    187195def send_mail(subject, recipients, ctx, template, blacklist=()): 
Note: See TracChangeset for help on using the changeset viewer.