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
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')
address_postalcode = reg_address_postalcode,
address_state = reg_address_state,
address_country = reg_address_country,
+ authority_hrn = reg_root_authority_hrn,
)
a.save()
email = reg_email,
password = reg_password,
keypair = account_config,
+ pi = reg_auth,
)
b.save()
#creating user to manifold local:user
user_config = '{"firstname":"'+ reg_fname + '", "lastname":"'+ reg_lname + '", "authority":"'+ reg_auth + '"}'
- user_params = {'email': reg_email, 'password': reg_password, 'config': user_config}
+ user_params = {'email': reg_email, 'password': reg_password, 'config': user_config, 'status': 1}
manifold_add_user(request,user_params)
#creating local:account in manifold
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 = {
'address_postalcode': request.POST.get('address_postalcode', ''),
'address_state': request.POST.get('address_state', ''),
'address_country': request.POST.get('address_country', ''),
+ '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)