+ # XXX tmp user_hrn inside the keypair column of pendiguser table
+ hrn = json.loads(request['keypair'])['user_hrn']
+ #hrn = "%s.%s" % (request['authority_hrn'], request['login'])
+ # XXX tmp sfa dependency
+ from sfa.util.xrn import Xrn
+ urn = Xrn(hrn, request['type']).get_urn()
+ if 'pi' in request:
+ auth_pi = request['pi']
+ else:
+ auth_pi = ''
+ sfa_user_params = {
+ 'hrn' : hrn,
+ 'urn' : urn,
+ 'type' : request['type'],
+ 'keys' : [json.loads(request['keypair'])['user_public_key']],
+ 'first_name' : request['first_name'],
+ 'last_name' : request['last_name'],
+ 'email' : request['email'],
+ #'slices' : None,
+ #'researcher': None,
+ 'pi' : [auth_pi],
+ 'enabled' : True
+ }
+ # ignored in request: id, timestamp, password
+
+ # ADD USER TO SFA Registry
+ sfa_add_user(wsgi_request, sfa_user_params)
+
+ # USER INFO
+ user_query = Query().get('local:user').select('user_id','config','email','status').filter_by('email', '==', request['email'])
+ user_details = execute_admin_query(request, user_query)
+ #print user_details[0]
+
+ # UPDATE USER STATUS = 2
+ manifold_user_params = {
+ 'status': 2
+ }
+ manifold_update_user(request, request['email'], manifold_user_params)
+
+ # USER MAIN ACCOUNT != reference
+ #print 'USER MAIN ACCOUNT != reference'
+ list_accounts_query = Query().get('local:account').select('user_id','platform_id','auth_type','config')\
+ .filter_by('user_id','==',user_details[0]['user_id'])\
+ .filter_by('auth_type','!=','reference')
+ list_accounts = execute_admin_query(request, list_accounts_query)
+ #print "List accounts = ",list_accounts
+ for account in list_accounts:
+ main_platform_query = Query().get('local:platform').select('platform_id','platform').filter_by('platform_id','==',account['platform_id'])
+ main_platform = execute_admin_query(request, main_platform_query)
+
+ # ADD REFERENCE ACCOUNTS ON SFA ENABLED PLATFORMS
+ #print 'ADD REFERENCE ACCOUNTS ON SFA ENABLED PLATFORMS'
+ platforms_query = Query().get('local:platform').filter_by('disabled', '==', '0').filter_by('gateway_type','==','sfa').select('platform_id','gateway_type')
+ platforms = execute_admin_query(request, platforms_query)
+ #print "platforms SFA ENABLED = ",platforms
+ for platform in platforms:
+ #print "add reference to platform ",platform
+ manifold_account_params = {
+ 'user_id': user_details[0]['user_id'],
+ 'platform_id': platform['platform_id'],
+ 'auth_type': 'reference',
+ 'config': '{"reference_platform": "' + main_platform[0]['platform'] + '"}',
+ }
+ manifold_add_account(request, manifold_account_params)
+