ManageUser: Admin edit's user details
authorYasin <mohammed-yasin.rahman@lip6.fr>
Mon, 17 Feb 2014 15:00:22 +0000 (16:00 +0100)
committerYasin <mohammed-yasin.rahman@lip6.fr>
Mon, 17 Feb 2014 15:00:22 +0000 (16:00 +0100)
portal/manageuserview.py
portal/static/js/my_account.edit_profile.js
portal/templates/manageuserview.html
portal/urls.py

index 59fc1d6..391e72c 100644 (file)
@@ -216,19 +216,33 @@ class UserView(LoginRequiredAutoLogoutView):
 
 @login_required
 #my_acc form value processing
-def user_process(request):
-    user_query  = Query().get('local:user').select('user_id','email','password','config')
-    user_details = execute_query(request, user_query)
+def user_process(request, **kwargs):
+        
+    for key, value in kwargs.iteritems():
+        if key == "email":
+            selected_email=value
+    print "yasin"
+    print selected_email
+    
+    user_query  = Query().get('local:user').filter_by('email', '==', selected_email).select('user_id','email','password','config')
+    user_details = execute_admin_query(request, user_query)
+
+    # getting the user_id from the session
+    for user_detail in user_details:
+        user_id = user_detail['user_id']
     
-    account_query  = Query().get('local:account').select('user_id','platform_id','auth_type','config')
-    account_details = execute_query(request, account_query)
+    account_query  = Query().get('local:account').filter_by('user_id', '==', user_id).select('user_id','platform_id','auth_type','config')
+    account_details = execute_admin_query(request, account_query)
 
     platform_query  = Query().get('local:platform').select('platform_id','platform')
-    platform_details = execute_query(request, platform_query)
+    platform_details = execute_admin_query(request, platform_query)
     
     # getting the user_id from the session
     for user_detail in user_details:
             user_id = user_detail['user_id']
+            user_email = user_detail['email']
+    
+    redirect_url = "/portal/user/"+selected_email
 
     for account_detail in account_details:
         for platform_detail in platform_details:
@@ -238,15 +252,15 @@ def user_process(request):
                 user_params = {'platform_id': platform_id, 'user_id': user_id, 'auth_type': "reference", 'config': '{"reference_platform": "myslice"}'}
                 manifold_add_account(request,user_params)
                 messages.info(request, 'Reference Account is added to the selected platform successfully!')
-                return HttpResponseRedirect("/portal/account/")
+                return HttpResponseRedirect(redirect_url)
 
             # Delete reference account from the platforms
             if 'delete_'+platform_detail['platform'] in request.POST:
                 platform_id = platform_detail['platform_id']
                 user_params = {'user_id':user_id}
                 manifold_delete_account(request,platform_id,user_params)
-                messages.info(request, 'Reference Account is removed from the selected platform')
-                return HttpResponseRedirect("/portal/account/")
+                messages.info(request, 'Refeence Account is removed from the selected platform')
+                return HttpResponseRedirect(redirect_url)
 
             if platform_detail['platform_id'] == account_detail['platform_id']:
                 if 'myslice' in platform_detail['platform']:
@@ -306,23 +320,23 @@ def user_process(request):
                 user_config['config']= '{"firstname":"' + edited_first_name + '", "lastname":"'+ edited_last_name + '", "authority": "Unknown Authority"}'
                 user_params = {'config': user_config['config']} 
         # updating config local:user in manifold       
-        manifold_update_user(request, request.user.email,user_params)
+        manifold_update_user(request, user_email, user_params)
         # this will be depricated, we will show the success msg in same page
         # Redirect to same page with success message
         messages.success(request, 'Sucess: First Name and Last Name Updated.')
-        return HttpResponseRedirect("/portal/account/")       
+        return HttpResponseRedirect(redirect_url)       
     
-    elif 'submit_pass' in request.POST:
-        edited_password = request.POST['password']
-        
-        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,request.user.email,user_params)
-#        return HttpResponse('Success: Password Changed!!')
-        messages.success(request, 'Sucess: Password Updated.')
-        return HttpResponseRedirect("/portal/account/")
+    #elif 'submit_pass' in request.POST:
+    #    edited_password = request.POST['password']
+    #    
+    #    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,request.user.email,user_params)
+#   #     return HttpResponse('Success: Password Changed!!')
+    #    messages.success(request, 'Sucess: Password Updated.')
+    #    return HttpResponseRedirect("/portal/account/")
 
 # XXX TODO: Factorize with portal/registrationview.py
 
@@ -350,10 +364,10 @@ def user_process(request):
                         user_pub_key = {'keys': public_key}
                         sfa_update_user(request, user_hrn, user_pub_key)
                         messages.success(request, 'Sucess: New Keypair Generated! Delegation of your credentials will be automatic.')
-                        return HttpResponseRedirect("/portal/account/")
+                        return HttpResponseRedirect(redirect_url)
         else:
             messages.error(request, 'Account error: You need an account in myslice platform to perform this action')
-            return HttpResponseRedirect("/portal/account/")
+            return HttpResponseRedirect(redirect_url)
                        
     elif 'upload_key' in request.POST:
         for account_detail in account_details:
@@ -383,7 +397,7 @@ def user_process(request):
                             return HttpResponseRedirect("/portal/account/")
                         else:
                             messages.error(request, 'RSA key error: Please upload a valid RSA public key [.txt or .pub].')
-                            return HttpResponseRedirect("/portal/account/")
+                            return HttpResponseRedirect(redirect_url)
         else:
             messages.error(request, 'Account error: You need an account in myslice platform to perform this action')
             return HttpResponseRedirect("/portal/account/")
@@ -401,7 +415,7 @@ def user_process(request):
                         break
         else:
             messages.error(request, 'Account error: You need an account in myslice platform to perform this action')
-            return HttpResponseRedirect("/portal/account/")
+            return HttpResponseRedirect(redirect_url)
                
     elif 'dl_pkey' in request.POST:
         for account_detail in account_details:
@@ -416,7 +430,7 @@ def user_process(request):
                             return response
                         else:
                             messages.error(request, 'Download error: Private key is not stored in the server')
-                            return HttpResponseRedirect("/portal/account/")
+                            return HttpResponseRedirect(redirect_url)
 
         else:
             messages.error(request, 'Account error: You need an account in myslice platform to perform this action')
@@ -441,11 +455,11 @@ def user_process(request):
                             return HttpResponseRedirect("/portal/account/")
                         else:
                             messages.error(request, 'Delete error: Private key is not stored in the server')
-                            return HttpResponseRedirect("/portal/account/")
+                            return HttpResponseRedirect(redirect_url)
                            
         else:
             messages.error(request, 'Account error: You need an account in myslice platform to perform this action')    
-            return HttpResponseRedirect("/portal/account/")
+            return HttpResponseRedirect(redirect_url)
 
     #clear all creds
     elif 'clear_cred' in request.POST:
@@ -466,10 +480,10 @@ def user_process(request):
                             return HttpResponseRedirect("/portal/account/")
                         else:
                             messages.error(request, 'Delete error: Credentials are not stored in the server')
-                            return HttpResponseRedirect("/portal/account/")
+                            return HttpResponseRedirect(redirect_url)
         else:
             messages.error(request, 'Account error: You need an account in myslice platform to perform this action')
-            return HttpResponseRedirect("/portal/account/")
+            return HttpResponseRedirect(redirect_url)
 
 
     # Download delegated_user_cred
@@ -481,10 +495,10 @@ def user_process(request):
             return response
         else:
             messages.error(request, 'Download error: User credential  is not stored in the server')
-            return HttpResponseRedirect("/portal/account/")
+            return HttpResponseRedirect(redirect_url)
         
     else:
         messages.info(request, 'Under Construction. Please try again later!')
-        return HttpResponseRedirect("/portal/account/")
+        return HttpResponseRedirect(redirect_url)
 
 
index 70607ba..f98427e 100644 (file)
@@ -20,9 +20,9 @@ jQuery(document).ready(function(){
                               jQuery("#span_pass").hide();
                               jQuery("#edit_pass").show();
                               jQuery("#passval").show();
-                              jQuery("#span_aff").hide();
-                              jQuery("#edit_aff").show();
-                              jQuery("#affval").show();
+                              jQuery("#span_auth").hide();
+                              jQuery("#edit_auth").show();
+                              jQuery("#authval").show();
                               jQuery("#span_email").hide();
                               jQuery("#edit_email").show();
                               jQuery("#emailval").show();
@@ -49,9 +49,9 @@ jQuery(document).ready(function(){
                               jQuery("#span_name").hide();
                               jQuery("#edit_name").show();
                               jQuery("#nameval").show();
-                              jQuery("#span_aff").hide();
-                              jQuery("#edit_aff").show();
-                              jQuery("#affval").show();
+                              jQuery("#span_auth").hide();
+                              jQuery("#edit_aauth").show();
+                              jQuery("#authval").show();
                               jQuery("#span_email").hide();
                               jQuery("#edit_email").show();
                               jQuery("#emailval").show();
@@ -77,12 +77,12 @@ jQuery(document).ready(function(){
                                 }
                             }
                       });
-                      //edit affiliation
-                      jQuery("#edit_aff").click(function(){
+                      //edit authority
+                      jQuery("#edit_auth").click(function(){
 
-                              jQuery("#span_aff").show();
-                              jQuery("#affval").hide();
-                              jQuery("#edit_aff").hide();
+                              jQuery("#span_auth").show();
+                              jQuery("#authval").hide();
+                              jQuery("#edit_auth").hide();
                               // enforcing when one edit is clicked the rest will not work at same time
                               jQuery("#span_pass").hide();
                               jQuery("#edit_pass").show();
@@ -98,14 +98,14 @@ jQuery(document).ready(function(){
                               jQuery("#dl_file").show();
                               jQuery("#upload_file").show();
                       });
-                      jQuery("#cancel_aff_change").click(function(){
+                      jQuery("#cancel_auth_change").click(function(){
 
-                              jQuery("#span_aff").hide();
-                              jQuery("#affval").show();
-                              jQuery("#edit_aff").show();
+                              jQuery("#span_auth").hide();
+                              jQuery("#authval").show();
+                              jQuery("#edit_auth").show();
                       });
                       //edit email
-                      /edit email will be done by PI if needed
+                      //edit email will be done by PI if needed
                       jQuery("#edit_email").click(function(){
 
                               jQuery("#span_email").show();
@@ -115,9 +115,9 @@ jQuery(document).ready(function(){
                               jQuery("#span_pass").hide();
                               jQuery("#edit_pass").show();
                               jQuery("#passval").show();
-                              jQuery("#span_aff").hide();
-                              jQuery("#edit_aff").show();
-                              jQuery("#affval").show();
+                              jQuery("#span_auth").hide();
+                              jQuery("#edit_auth").show();
+                              jQuery("#authval").show();
                               jQuery("#span_name").hide();
                               jQuery("#edit_name").show();
                               jQuery("#nameval").show();
@@ -131,7 +131,7 @@ jQuery(document).ready(function(){
                               jQuery("#span_email").hide();
                               jQuery("#emailval").show();
                               jQuery("#edit_email").show();
-                      }); */
+                      }); 
                       //upload pub keys
                       jQuery("#upload_file").click(function(){
 
@@ -146,9 +146,9 @@ jQuery(document).ready(function(){
                               jQuery("#span_pass").hide();
                               jQuery("#edit_pass").show();
                               jQuery("#passval").show();
-                              jQuery("#span_aff").hide();
-                              jQuery("#edit_aff").show();
-                              jQuery("#affval").show();
+                              jQuery("#span_auth").hide();
+                              jQuery("#edit_auth").show();
+                              jQuery("#authval").show();
                               jQuery("#span_email").hide();
                               jQuery("#edit_email").show();
                               jQuery("#emailval").show();
index 24ca18c..9b45708 100644 (file)
@@ -12,7 +12,7 @@
 {% endif %}
 
 
-<form id="editForm"  method="POST" action="account_process" enctype="multipart/form-data">
+<form id="editForm"  method="POST" action="{{user_email}}/user_process" enctype="multipart/form-data">
 <div id="middle" align="center">
        <div class="well">
                {% csrf_token %}
                                                <div id="info">Platform: Myslice</div>
                                </td>
                        </tr>
-                       <tr class="even">
-                               <td class="key">Email</td>
-                               <td class="value">
-                                               <span id="emailval" class="value" >{{ user_email }}</span>
-                                               <button class="btn btn-default btn-xs" type="button" id="edit_email"  title="To change your affiliation please contact the administrator">
-                                               <span class="glyphicon glyphicon-edit"></span> Edit
-                                               </button>
-                                       </td>
-                       </tr>
+                               <tr class="odd">
+                               <td class="key">Email</td>
+                               <td class="value">
+                                       <span id="emailval" class="value" >{{ user_email }} </span>
+                                       <span class="hide_this" id="span_email">
+                                       <button type="button" class="btn btn-default btn-xs" title="Cancel" id="cancel_email_change"> Cancel </button>
+                                       <div style='display:none;'><input type='hidden'  name='emailform'  /></div>
+                                       <input id="email" type="text" name="email" class="required"  maxlength="200" value="{{user_email}}" />
+                                       <input type="submit" class="btn btn-default btn-xs" name="submit_email" value="Save"/>
+                                       </span>
+                                       <button class="btn btn-default btn-xs" type="button"title="email" id="edit_email">
+                                       <span class="glyphicon glyphicon-edit"></span> Edit
+                                       </button>
+                               </td>
+                               </tr>       
                        <tr class="even">
                                        <td class="key">Full Name</td>
                                        <td class="value">
                                                </button>
                                        </td>
                        </tr>
-                       <tr class="odd">
-                                       <td class="key">Authority</td>
-                                       <td class="value">
-                                               <span id="affval" class="value">{{ authority }}</span>
-                                                <button class="btn btn-default btn-xs" type="button" id="edit_auth"   title="To change your authority please contact the administrator">
-                                               <span class="glyphicon glyphicon-edit"></span> Edit
-                                                </button>
-                                       </td>
-                               </tr>
+                               <tr class="odd">
+                               <td class="key">Authority</td>
+                               <td class="value">
+                                       <span id="authval" class="value" >{{ authority }} </span>
+                                       <span class="hide_this" id="span_auth">
+                                       <button type="button" class="btn btn-default btn-xs" title="Cancel" id="cancel_auth_change"> Cancel </button>
+                                       <div style='display:none;'><input type='hidden'  name='authform'  /></div>
+                                       <input id="authority" type="text" name="authority" class="required"  maxlength="200" value="{{authority}}" />
+                                       <input type="submit" class="btn btn-default btn-xs" name="submit_auth" value="Save"/>
+                                       </span>
+                                       <button class="btn btn-default btn-xs" type="button"title="auth" id="edit_auth">
+                                       <span class="glyphicon glyphicon-edit"></span> Edit
+                                       </button>
+                               </td>
+                               </tr>     
                                <tr class="even">
                                        <td class="key">Generate Keys</td>
                                        <td>
index 98c7a79..c1ca5b1 100644 (file)
@@ -61,8 +61,8 @@ urlpatterns = patterns('',
     #url(r'^my_account/?$', MyAccountView.as_view(), name='my_account'),
     url(r'^account/?$', AccountView.as_view(), name='account'),
     url(r'^admin/?$', AdminView.as_view(), name='user_list'),
-    url(r'^user/(?P<email>[\w\s.@\-]+)/?$', UserView.as_view(), name='account'),
-    url(r'^user/user_process/?$', user_process),
+    url(r'^user/(?P<email>[\w\s.@\-]+)/?$', UserView.as_view(), name='user'),
+    url(r'^user/(?P<email>[\w\s.@\-]+)/user_process/?$', user_process),
     url(r'^platforms/?$', PlatformsView.as_view(), name='platforms'),
     url(r'^platform/(?P<platformname>[\w\.\-]+)/?$', PlatformView.as_view(), name='platform'),
     url(r'^resource/(?P<urn>[\w\.\-\+\:]+)/?$', ResourceView.as_view(), name='resource'),