from portal.actions import authority_get_pi_emails, manifold_add_user,manifold_add_account, create_pending_user
from myslice.theme import ThemeView
+from myslice.settings import logger
+
+import activity.institution
# since we inherit from FreeAccessView we cannot redefine 'dispatch'
# so let's override 'get' and 'post' instead
#prepare user_hrn
split_email = reg_email.split("@")[0]
split_email = split_email.replace(".", "_")
+ # Replace + by _ => more convenient for testing and validate with a real email
+ split_email = split_email.replace("+", "_")
user_hrn = reg_auth + '.' + split_email
UserModel = get_user_model()
errors.append('First Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
if (re.search(r'^[\w+\s.@+-]+$', reg_lname) == None):
errors.append('Last Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
+ if (re.search(r'^[A-Za-z0-9_ ]*$', reg_site_name) == None):
+ errors.append('Name of organization may contain only letters, numbers, and underscore.')
+ if (re.search(r'^[A-Za-z ]*$', reg_address_city) == None):
+ errors.append('City may contain only letters.')
+ if (re.search(r'^[A-Za-z ]*$', reg_address_country) == None):
+ errors.append('Country may contain only letters.')
+ if (re.search(r'^[A-Za-z0-9]*$', reg_site_abbreviated_name) == None):
+ errors.append('Shortname may contain only letters and numbers')
+ if (re.search(r'^[0-9]*$', reg_phone) == None):
+ errors.append('Phone number may contain only numbers.')
#if (re.search(r'^\w+$', reg_site_authority) == None):
# errors.append('Site Authority may contain only letters or numbers.')
# checking in django_db !!
errors.append('Email already registered in Manifold. Please provide a new email address.')
# XXX TODO: Factorize with portal/accountview.py
+# XXX TODO: Factorize with portal/registrationview.py
+# XXX TODO: Factorize with portal/joinview.py
# if 'generate' in request.POST['question']:
from Crypto.PublicKey import RSA
private = RSA.generate(1024)
- private_key = json.dumps(private.exportKey())
- public = private.publickey()
- public_key = json.dumps(public.exportKey(format='OpenSSH'))
-
+ private_key = private.exportKey()
+ public_key = private.publickey().exportKey(format='OpenSSH')
# Saving to DB
- account_config = '{"user_public_key":'+ public_key + ', "user_private_key":'+ private_key + ', "user_hrn":"'+ user_hrn + '"}'
auth_type = 'managed'
- public_key = public_key.replace('"', '');
- private_key = private_key.replace('"', '');
if not errors:
reg_password = request.POST['pi_password']
site_url = reg_site_url,
site_latitude = reg_site_latitude,
site_longitude = reg_site_longitude,
- address_line1 = reg_address_line1,
+ address_line1 = reg_email, # XXX field name must be renamed. Email needed 4 rejection email.
address_line2 = reg_address_line2,
address_line3 = reg_address_line3,
address_city = reg_address_city,
'user_hrn' : user_hrn,
'pi' : [reg_auth],
'auth_type' : 'managed',
- 'validation_link': 'http://' + current_site + '/portal/email_activation/'+ email_hash
+ 'validation_link': current_site + '/portal/email_activation/'+ email_hash
}
'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,
'user_hrn' : user_hrn,
'public_key' : public_key,
}
- recipients = authority_get_pi_emails(request,reg_auth)
+
+ #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)
+ self.template_name = 'authority_request_email.html'
+ html_content = render_to_string(self.template, ctx)
- theme.template_name = 'authority_request_email.txt'
- text_content = render_to_string(theme.template, ctx)
+ self.template_name = 'authority_request_email.txt'
+ text_content = render_to_string(self.template, ctx)
- theme.template_name = 'authority_request_email_subject.txt'
- subject = render_to_string(theme.template, ctx)
+ self.template_name = 'authority_request_email_subject.txt'
+ subject = render_to_string(self.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)
+ #theme.template_name = 'email_default_sender.txt'
+ #sender = render_to_string(theme.template, ctx)
+ #sender = sender.replace('\n', '')
+ sender = reg_email
+
+ msg = EmailMultiAlternatives(subject, text_content, sender, ['support@onelab.eu'])
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"
-
+ logger.error("Failed to send email, please check the mail templates and the SMTP configuration of your server")
+ import traceback
+ logger.error(traceback.format_exc())
+
self.template_name = 'join_complete.html'
+ # log institution activity
+ activity.institution.joined(self.request)
return render(request, self.template, {'theme': self.theme})
#return render(request, 'user_register_complete.html')
'theme': self.theme
}
template_env.update(page.prelude_env ())
+ # log institution activity
+ activity.institution.join(self.request)
return render(request, 'join_view.html',template_env)