X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=portal%2Fjoinview.py;h=c128db3b68bf2477ee8967e08c7b94e08b3dbf0b;hb=1eb1d91a070854cbe5e044d9c2260b15c3c64622;hp=42f7ac561faf5a2c781b19fef17dc00aa5a9b6b6;hpb=048e585c9c2431b804a3bff921c17fc2d3b34e85;p=unfold.git diff --git a/portal/joinview.py b/portal/joinview.py index 42f7ac56..c128db3b 100644 --- a/portal/joinview.py +++ b/portal/joinview.py @@ -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 @@ -13,16 +13,18 @@ from unfold.page import Page from unfold.loginrequired import FreeAccessView from ui.topmenu import topmenu_items_live -from manifold.manifoldapi import execute_admin_query +from manifoldapi.manifoldapi import execute_admin_query from manifold.core.query import Query from portal.models import PendingUser,PendingAuthority from portal.actions import authority_get_pi_emails, manifold_add_user,manifold_add_account +from myslice.theme import ThemeView + # since we inherit from FreeAccessView we cannot redefine 'dispatch' # so let's override 'get' and 'post' instead # -class JoinView (FreeAccessView): +class JoinView (FreeAccessView, ThemeView): def post (self, request): return self.get_or_post (request, 'POST') @@ -144,6 +146,7 @@ class JoinView (FreeAccessView): email = reg_email, password = reg_password, keypair = account_config, + pi = reg_auth, ) b.save() @@ -158,25 +161,57 @@ class JoinView (FreeAccessView): 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 = { @@ -203,6 +238,7 @@ class JoinView (FreeAccessView): 'root_authority_hrn': request.POST.get('root_authority_hrn', '').lower(), 'root_authorities': root_authorities, 'authorities': authorities, + 'theme': self.theme } template_env.update(page.prelude_env ()) return render(request, 'join_view.html',template_env)