Emails: use templates for all emails - To be tested !
[unfold.git] / portal / joinview.py
index caea6d2..abe73f3 100644 (file)
@@ -2,7 +2,7 @@ import os.path, re
 import json
 from random import randint
 
-from django.core.mail           import send_mail
+from django.core.mail           import EmailMultiAlternatives
 from django.contrib.auth.models import User
 from django.views.generic       import View
 from django.template.loader     import render_to_string
@@ -161,25 +161,57 @@ class JoinView (FreeAccessView, ThemeView):
                 user_id = user_detail['user_id']+1 # the user_id for the newly created user in local:user
                 account_params = {'platform_id': 5, 'user_id': user_id, 'auth_type': auth_type, 'config': account_config}
                 manifold_add_account(request,account_params)
+
                 # Send email
-                ctx = {
-                    'first_name'    : reg_fname, 
-                    'last_name'     : reg_lname, 
-                    'authority_hrn' : reg_auth,
-                    'email'         : reg_email,
-                    'user_hrn'      : user_hrn,
-                    'public_key'    : public_key,
-                    }
-                recipients = authority_get_pi_emails(request,reg_auth)
-                
-                # We don't need to send this email to user.
-                # it's for the PI only
-                #if ctx['cc_myself']:
-                #    recipients.append(ctx['email'])
-
-                msg = render_to_string('user_request_email.txt', ctx)
-                send_mail("Onelab New Authority request for %s submitted"%reg_email, msg, 'support@myslice.info', recipients)
+                try: 
+                    ctx = {
+                        'site_name'             : reg_site_name,             
+                        'authority_hrn'         : reg_root_authority_hrn + '.' + reg_site_authority,
+                        'site_abbreviated_name' : reg_site_abbreviated_name, 
+                        'site_url'              : reg_site_url,
+                        'site_latitude'         : reg_site_latitude, 
+                        'site_longitude'        : reg_site_longitude,
+                        'address_line1'         : reg_address_line1,
+                        'address_line2'         : reg_address_line2,
+                        'address_line3'         : reg_address_line3,
+                        'address_city'          : reg_address_city,
+                        'address_postalcode'    : reg_address_postalcode,
+                        'address_state'         : reg_address_state,
+                        'address_country'       : reg_address_country,
+                        'first_name'            : reg_fname, 
+                        'last_name'             : reg_lname, 
+                        'authority_hrn'         : reg_auth,
+                        'email'                 : reg_email,
+                        'user_hrn'              : user_hrn,
+                        'public_key'            : public_key,
+                        }
+                    recipients = authority_get_pi_emails(request,reg_auth)
+                    
+                    # We don't need to send this email to user.
+                    # it's for the PI only
+                    #if ctx['cc_myself']:
+                    #    recipients.append(ctx['email'])
+                    theme.template_name = 'authority_request_email.html'
+                    html_content = render_to_string(theme.template, ctx)
+            
+                    theme.template_name = 'authority_request_email.txt'
+                    text_content = render_to_string(theme.template, ctx)
+            
+                    theme.template_name = 'authority_request_email_subject.txt'
+                    subject = render_to_string(theme.template, ctx)
+                    subject = subject.replace('\n', '')
+            
+                    theme.template_name = 'email_default_sender.txt'
+                    sender =  render_to_string(theme.template, ctx)
+                    sender = sender.replace('\n', '')
+            
+                    msg = EmailMultiAlternatives(subject, text_content, sender, [recipients])
+                    msg.attach_alternative(html_content, "text/html")
+                    msg.send()
+    
+                except Exception, e:
+                    print "Failed to send email, please check the mail templates and the SMTP configuration of your server"
+
                 return render(request, 'user_register_complete.html') 
 
         template_env = {