from portal.forms import SliceRequestForm, ContactForm
from portal.util import RegistrationView, ActivationView
from portal.models import PendingUser, PendingSlice
-from portal.actions import authority_get_pi_emails, get_request_by_authority
+from portal.actions import authority_get_pi_emails, get_request_by_authority, manifold_add_user, manifold_update_user
from manifold.core.query import Query
from manifold.manifoldapi import execute_query
from unfold.page import Page
user_query = Query().get('local:user').select('config','email')
user_details = execute_query(self.request, user_query)
+ # not always found in user_details...
+ config={}
for user_detail in user_details:
#email = user_detail['email']
if user_detail['config']:
platform_name = ''
account_type = ''
account_usr_hrn = ''
- account_pub_key = ''
+ account_pub_key = ''
+ platform_name_list = []
+ account_type_list = []
+ usr_hrn_list = []
+ pub_key_list = []
for account_detail in account_details:
for platform_detail in platform_details:
if platform_detail['platform_id'] == account_detail['platform_id']:
platform_name = platform_detail['platform']
account_type = account_detail['auth_type']
account_config = json.loads(account_detail['config'])
+ # a bit more pythonic
+ account_usr_hrn = account_config.get('user_hrn','N/A')
+ account_pub_key = account_config.get('user_public_key','N/A')
- if 'user_hrn' in account_config:
- account_usr_hrn = account_config['user_hrn']
- else:
- account_usr_hrn = 'N/A'
- if 'user_public_key' in account_config:
- account_pub_key = account_config['user_public_key']
- else:
- account_pub_key = 'N/A'
- #print "THis is a test"
- #print account_pub_key
+ platform_name_list.append(platform_name)
+ account_type_list.append(account_type)
+ usr_hrn_list.append(account_usr_hrn)
+ pub_key_list.append(account_pub_key)
- #page.enqueue_query(network_query)
-
- #page.expose_js_metadata()
- #page.expose_queries()
-
- #userlist = SimpleList(
- # title = None,
- # page = page,
- # key = 'user_id',
- # query = network_query,
- #)
+ # combining 4 lists into 1 [to render in the template]
+ lst = [{'platform_name': t[0], 'account_type': t[1], 'usr_hrn':t[2], 'usr_pubkey':t[3]} for t in zip(platform_name_list, account_type_list, usr_hrn_list, pub_key_list)]
+ #print "test"
+ #print lst
context = super(AccountView, self).get_context_data(**kwargs)
- context['platform_name'] = platform_name
- context['account_type'] = account_type
- context['account_usr_hrn'] = account_usr_hrn
- context['account_pub_key'] = account_pub_key
+ context['data'] = lst
context['person'] = self.request.user
- context ['fullname'] = config['firstname'] +' '+ config['lastname']
- context ['firstname'] = config['firstname']
- context ['lastname'] = config['lastname']
- context ['affiliation'] = config['affiliation']
+ context ['firstname'] = config.get('firstname',"?")
+ context ['lastname'] = config.get('lastname',"?")
+ context ['fullname'] = context['firstname'] +' '+ context['lastname']
+ context ['authority'] = config.get('authority',"Unknown Authority")
#context['users'] = userlist.render(self.request)
# XXX This is repeated in all pages
context['topmenu_items'] = topmenu_items('My Account', self.request)
# so we can sho who is logged
context['username'] = the_user(self.request)
- context ['firstname'] = config['firstname']
+# context ['firstname'] = config['firstname']
#context.update(page.prelude_env())
return context
-
-
-
-
-
+#my_acc form value processing
@login_required
-# View for my_account form
-#def my_account(request):
-# return render(request, 'my_account.html', {
-# #'form': form,
-# 'topmenu_items': topmenu_items('My Account', request),
-# 'username': the_user (request)
-# })
+def acc_process(request):
+
+ user_query = Query().get('local:user').select('password','config')
+ user_details = execute_query(request, user_query)
-@login_required
-#my_acc form value processing
-def acc_process(request):
- # getting the user_id from the session [now hardcoded]
- get_user = PendingUser.objects.get(id='1') # here we will get the id/email from session e.g., person.email
- # getting user info from manifold
if 'submit_name' in request.POST:
edited_first_name = request.POST['fname']
edited_last_name = request.POST['lname']
- #email = 'test_email@gmail.com'
- #password = 'test_pp'
- #message = 'F_Name: %s L_name: %s dummy_pp: %s' % (first_name, last_name, password)
- #site = None
- # insert into DB [needed for registration page]
- #approach borrowed from register view
- #new_user = PendingUser.objects.create_inactive_user(edited_first_name, edited_last_name, email, password, site)
- #conventional approach
- #b = PendingUser(first_name=edited_first_name, last_name=edited_last_name)
- #b.save()
+ config={}
+ for user_config in user_details:
+ #email = user_detail['email']
+ if user_config['config']:
+ config = json.loads(user_config['config'])
+ config['firstname'] = edited_first_name
+ config['lastname'] = edited_last_name
+ config['authority'] = config.get('authority','Unknown Authority')
+ updated_config = json.dumps(config)
- # select and update [will be used throughout this view]
- # select the logged in user [for the moment hard coded]
- #get_user = PendingUser.objects.get(id='1') # here we will get the id/email from session e.g., person.email
- # update first and last name
- get_user.first_name = edited_first_name
- get_user.last_name = edited_last_name
- get_user.save()
-
+ # updating config local:user in manifold
+ user_params = { 'config': updated_config}
+ manifold_update_user(request,user_params)
+ # this will be depricated, we will show the success msg in same page
return HttpResponse('Sucess: First Name and Last Name Updated!')
elif 'submit_pass' in request.POST:
edited_password = request.POST['password']
- # select the logged in user [for the moment hard coded]
- #get_user = PendingUser.objects.get(id='1') # here we will get the id/email from session e.g., person.email
- # update password
- get_user.password = edited_password
- get_user.save()
+
+ for user_pass in user_details:
+ user_pass['password'] = edited_password
+ #updating password in local:user
+ user_params = { 'password': user_pass['password']}
+ manifold_update_user(request,user_params)
+
return HttpResponse('Success: Password Changed!!')
elif 'generate' in request.POST:
# Generate public and private keys using SFA Library
k = Keypair(create=True)
public_key = k.get_pubkey_string()
private_key = k.as_pem()
-
-# DEPRECATED
-# KEY_LENGTH = 2048
-#
-# def blank_callback():
-# "Replace the default dashes"
-# return
-#
-# # Random seed
-# Rand.rand_seed (os.urandom (KEY_LENGTH))
-# # Generate key pair
-# key = RSA.gen_key (KEY_LENGTH, 65537, blank_callback)
-# # Create memory buffers
-# pri_mem = BIO.MemoryBuffer()
-# pub_mem = BIO.MemoryBuffer()
-# # Save keys to buffers
-# key.save_key_bio(pri_mem, None)
-# key.save_pub_key_bio(pub_mem)
-#
-# # Get keys
-# public_key = pub_mem.getvalue()
-# private_key = pri_mem.getvalue()
private_key = ''.join(private_key.split())
public_key = "ssh-rsa " + public_key
# Saving to DB
k = Keypair(create=True)
public_key = k.get_pubkey_string()
private_key = k.as_pem()
-
-# DEPRECATED
-# #import os
-# #from M2Crypto import Rand, RSA, BIO
-#
-# KEY_LENGTH = 2048
-#
-# def blank_callback():
-# "Replace the default dashes"
-# return
-#
-# # Random seed
-# Rand.rand_seed (os.urandom (KEY_LENGTH))
-# # Generate key pair
-# key = RSA.gen_key (KEY_LENGTH, 65537, blank_callback)
-# # Create memory buffers
-# pri_mem = BIO.MemoryBuffer()
-# pub_mem = BIO.MemoryBuffer()
-# # Save keys to buffers
-# key.save_key_bio(pri_mem, None)
-# key.save_pub_key_bio(pub_mem)
-# # Get keys
-# public_key = pub_mem.getvalue()
-# private_key = pri_mem.getvalue()
-
private_key = ''.join(private_key.split())
public_key = "ssh-rsa " + public_key
# Saving to DB