theme = ThemeView()
+import activity.slice
+
# Thierry: moving this right into the code so
# most people can use myslice without having to install sfa
# XXX tmp sfa dependency, should be moved to SFA gateway
#default_email = default_email.replace('\n', '')
#return default_email
# the above doesn't work
- return ['support@myslice.info']
+ return ['support@onelab.eu']
else:
pi_user_hrns = [ hrn for x in pi_users for hrn in x['pi_users'] ]
query = Query.get('user').filter_by('user_hrn', 'included', pi_user_hrns).select('user_email')
if 'email' in user_params:
user_params['user_email'] = user_params['email']
query = Query.update('user').filter_by('user_hrn', '==', user_hrn).set(user_params).select('user_hrn')
- results = execute_query(request,query)
+ results = execute_admin_query(request,query)
return results
def sfa_add_authority(request, authority_params):
def portal_reject_request(wsgi_request, request_ids):
status = {}
+ # get the domain url
+ current_site = Site.objects.get_current()
+ current_site = current_site.domain
+
if not isinstance(request_ids, list):
request_ids = [request_ids]
first_name = user.first_name
last_name = user.last_name
- # get the domain url
- current_site = Site.objects.get_current()
- current_site = current_site.domain
-
ctx = {
'first_name' : first_name,
'last_name' : last_name,
sender = render_to_string(theme.template, ctx)
sender = sender.replace('\n', '')
- subject = 'User validation denied.'
+ subject = 'User request denied.'
msg = EmailMultiAlternatives(subject, text_content, sender, [user_email])
msg.attach_alternative(html_content, "text/html")
# getting user email based on id
## RAW SQL queries on Django DB- https://docs.djangoproject.com/en/dev/topics/db/sql/
- for user in PendingUser.objects.raw('SELECT * FROM portal_pendingslice WHERE id = %s', [request['id']]):
- user_email= user.type_of_nodes # XXX type_of_nodes field contains the email [shd be renamed]
-
- # get the domain url
- current_site = Site.objects.get_current()
- current_site = current_site.domain
-
- ctx = {
- 'portal_url' : current_site,
- }
- try:
- theme.template_name = 'slice_request_denied.txt'
- text_content = render_to_string(theme.template, ctx)
- theme.template_name = 'slice_request_denied.html'
- html_content = render_to_string(theme.template, ctx)
- theme.template_name = 'email_default_sender.txt'
- sender = render_to_string(theme.template, ctx)
- sender = sender.replace('\n', '')
+ for user in PendingSlice.objects.raw('SELECT * FROM portal_pendingslice WHERE id = %s', [request['id']]):
+ user_email= user.type_of_nodes # XXX type_of_nodes field contains the email [shd be renamed in DB]
+ slice_name = user.slice_name
+ purpose = user.purpose
+ url = user.number_of_nodes
+
+ ctx = {
+ 'slice_name': slice_name,
+ 'purpose': purpose,
+ 'url': url,
+ 'portal_url': current_site,
+ }
+ try:
+ theme.template_name = 'slice_request_denied.txt'
+ text_content = render_to_string(theme.template, ctx)
+ theme.template_name = 'slice_request_denied.html'
+ html_content = render_to_string(theme.template, ctx)
+ theme.template_name = 'email_default_sender.txt'
+ sender = render_to_string(theme.template, ctx)
+ sender = sender.replace('\n', '')
- subject = 'Slice request denied.'
+ subject = 'Slice request denied.'
- msg = EmailMultiAlternatives(subject, text_content, sender, [user_email])
- 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"
+ msg = EmailMultiAlternatives(subject, text_content, sender, [user_email])
+ 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"
PendingSlice.objects.get(id=request['id']).delete()
+
elif request['type'] == 'authority':
- request_status['SFA authority'] = {'status': True }
+ request_status['SFA authority'] = {'status': True }
+
+ # getting user email based on id
+ ## RAW SQL queries on Django DB- https://docs.djangoproject.com/en/dev/topics/db/sql/
+ for user in PendingAuthority.objects.raw('SELECT * FROM portal_pendingauthority WHERE id = %s', [request['id']]):
+ user_email= user.address_line1 # XXX address_line1 field contains the email [shd be renamed in DB]
+ site_name = user.site_name
+ city = user.address_city
+ country = user.address_country
+ short_name = user.site_abbreviated_name
+ url = user.site_url
+
+ ctx = {
+ 'site_name': site_name,
+ 'short_name': short_name,
+ 'url': url,
+ 'city': city,
+ 'country': country,
+ 'portal_url' : current_site,
+ }
+
+ try:
+ theme.template_name = 'authority_request_denied.txt'
+ text_content = render_to_string(theme.template, ctx)
+ theme.template_name = 'authority_request_denied.html'
+ html_content = render_to_string(theme.template, ctx)
+ theme.template_name = 'email_default_sender.txt'
+ sender = render_to_string(theme.template, ctx)
+ sender = sender.replace('\n', '')
+ subject = 'Authority request denied.'
+ msg = EmailMultiAlternatives(subject, text_content, sender, [user_email])
+ 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"
+
PendingAuthority.objects.get(id=request['id']).delete()
status['%s__%s' % (request['type'], request['id'])] = request_status
}
# ignored in request: id, timestamp, number_of_nodes, type_of_nodes, purpose
- query = Query.create('slice').set(slice_params).select('slice_hrn')
+ query = Query.create('myslice:slice').set(slice_params).select('slice_hrn')
results = execute_query(wsgi_request, query)
if not results:
raise Exception, "Could not create %s. Already exists ?" % slice_params['hrn']
else:
clear_user_creds(wsgi_request,user_email)
-
+ # log user activity
+ activity.slice.validate(request, { "slice" : hrn })
try:
theme.template_name = 'slice_request_validated.txt'
text_content = render_to_string(theme.template, request)
return results
+def iotlab_create_user (wsgi_request, request, namespace = None, as_admin=False):
+
+ import requests
+ import time
+ from requests.auth import HTTPBasicAuth
+
+ URL_REST = 'https://devgrenoble.senslab.info/rest/admin/users'
+ LOGIN_ADMIN = "auge"
+ PASSWORD_ADMIN = "k,mfg1+Q"
+
+ auth = HTTPBasicAuth(LOGIN_ADMIN,PASSWORD_ADMIN)
+ headers = {'content-type': 'application/json'}
+
+ for user in PendingUser.objects.raw('SELECT * FROM portal_pendinguser WHERE email = %s', [request['email']]):
+ password= user.password
+
+
+ iotlab_user_params = {
+ "type" : "SA",
+ "login" : request['email'],
+ "password" : password,
+ "firstName" : request['first_name'],
+ "lastName" : request['last_name'],
+ "email" : request['email'],
+ "structure" : request['authority_hrn'],
+ "city" : "N/A",
+ "country" : "N/A",
+ "sshPublicKey" : request['public_key'],
+ "motivations" : "SFA federation",
+ }
+
+ iotlab_user_params1 = json.dumps(iotlab_user_params)
+ r=requests.post(url=URL_REST, data=iotlab_user_params1, headers=headers, auth=auth)
+ print 'Create iotlab user : ', r.status_code, r.text
+ return r.text
+
def create_user(wsgi_request, request, namespace = None, as_admin = False):
# XXX This has to be stored centrally
USER_STATUS_ENABLED = 2
# Add reference accounts for platforms
manifold_add_reference_user_accounts(wsgi_request, request)
+ # Add the user to iotlab portal if theme is set to onelab
+ if theme.theme == 'onelab':
+ iotlab_create_user (wsgi_request, request)
+
def create_pending_user(wsgi_request, request, user_detail):
"""
"""
theme.template_name = 'activate_user_email_subject.txt'
subject = render_to_string(theme.template, request)
subject = subject.replace('\n', '')
- #sender = 'support@myslice.info'
theme.template_name = 'email_default_sender.txt'
sender = render_to_string(theme.template, request)
sender = sender.replace('\n', '')