homeview: use the get_myslice_account function instead of ugly loops
authorLoic Baron <loic.baron@lip6.fr>
Tue, 21 Apr 2015 15:28:51 +0000 (17:28 +0200)
committerLoic Baron <loic.baron@lip6.fr>
Tue, 21 Apr 2015 15:28:51 +0000 (17:28 +0200)
portal/actions.py
portal/homeview.py

index aa156a5..80e23f5 100644 (file)
@@ -28,15 +28,21 @@ import activity.slice
 def get_myslice_platform(request):
     platform_query  = Query().get('local:platform').select('platform_id','platform','gateway_type','disabled','config').filter_by('platform','==','myslice')
     platform_details = execute_query(request, platform_query)
-    for platform_detail in platform_details:
-        return platform_detail
+    if isinstance(platform_details,list):
+        for platform_detail in platform_details:
+            return platform_detail
+    else:
+        return None
 
 def get_myslice_account(request):
     platform_myslice = get_myslice_platform(request)
     account_query  = Query().get('local:account').select('user_id','platform_id','auth_type','config').filter_by('platform_id','==',platform_myslice['platform_id'])
     account_details = execute_query(request, account_query)
-    for account_detail in account_details:
-        return account_detail
+    if isinstance(account_details,list):
+        for account_detail in account_details:
+            return account_detail
+    else:
+        return None
 
 def get_registry_url(request):
     try:
index 42d8eae..e5d962d 100644 (file)
@@ -21,7 +21,7 @@ from myslice.theme                      import ThemeView
 
 from portal.account                     import Account, get_expiration
 from portal.models                      import PendingSlice
-from portal.actions                     import authority_check_pis, get_jfed_identity
+from portal.actions                     import authority_check_pis, get_jfed_identity, get_myslice_account
 
 import activity.user
 
@@ -71,23 +71,14 @@ class HomeView (FreeAccessView, ThemeView):
                     activity.user.login(self.request)
 
                     ## check user is pi or not
-                    platform_details = {}
-                    account_details = {}
                     acc_auth_cred = {}
                     acc_user_cred = {}
-                    platform_query  = Query().get('local:platform').select('platform_id','platform','gateway_type','disabled')
-                    account_query  = Query().get('local:account').select('user_id','platform_id','auth_type','config')
-                    platform_details = execute_query(self.request, platform_query)
-                    account_details = execute_query(self.request, account_query)
-                    if platform_details is not None and platform_details != {}:
-                        for platform_detail in platform_details:
-                            for account_detail in account_details:
-                                if platform_detail['platform_id'] == account_detail['platform_id']:
-                                    if 'config' in account_detail and account_detail['config'] is not '':
-                                        account_config = json.loads(account_detail['config'])
-                                        if 'myslice' in platform_detail['platform']:
-                                            acc_auth_cred = account_config.get('delegated_authority_credentials','N/A')
-                                            acc_user_cred = account_config.get('delegated_user_credential','N/A')
+
+                    account_detail = get_myslice_account(self.request)
+                    if 'config' in account_detail and account_detail['config'] is not '':
+                        account_config = json.loads(account_detail['config'])
+                        acc_auth_cred = account_config.get('delegated_authority_credentials','N/A')
+                        acc_user_cred = account_config.get('delegated_user_credential','N/A')
                     # assigning values
                     #if acc_auth_cred=={} or acc_auth_cred=='N/A':
                     #    pi = "is_not_pi"
@@ -142,15 +133,16 @@ class HomeView (FreeAccessView, ThemeView):
         env = self.default_env()
         acc_auth_cred={}
 
-        jfed_identity = get_jfed_identity(request)
-        if jfed_identity is not None:
-            import base64
-            encoded_jfed_identity = base64.b64encode(jfed_identity)
-            env['jfed_identity'] = encoded_jfed_identity 
-        else:
-            env['jfed_identity'] = None
+
 
         if request.user.is_authenticated():
+            jfed_identity = get_jfed_identity(request)
+            if jfed_identity is not None:
+                import base64
+                encoded_jfed_identity = base64.b64encode(jfed_identity)
+                env['jfed_identity'] = encoded_jfed_identity 
+            else:
+                env['jfed_identity'] = None
 
             ## check user is pi or not
             platform_details = {}
@@ -160,18 +152,12 @@ class HomeView (FreeAccessView, ThemeView):
             platform_query  = Query().get('local:platform').select('platform_id','platform','gateway_type','disabled')
             account_query  = Query().get('local:account').select('user_id','platform_id','auth_type','config')
             # XXX Something like an invalid session seems to make the execute fail sometimes, and thus gives an error on the main page
-            platform_details = execute_query(self.request, platform_query)
-            account_details = execute_query(self.request, account_query)
-            if platform_details is not None and platform_details != {}:
-                for platform_detail in platform_details:
-                    for account_detail in account_details:
-                        if 'platform_id' in platform_detail:
-                            if platform_detail['platform_id'] == account_detail['platform_id']:
-                                if 'config' in account_detail and account_detail['config'] is not '':
-                                    account_config = json.loads(account_detail['config'])
-                                    if 'myslice' in platform_detail['platform']:
-                                        acc_auth_cred = account_config.get('delegated_authority_credentials','N/A')
-                                        acc_user_cred = account_config.get('delegated_user_credential','N/A')
+
+            account_detail = get_myslice_account(self.request)
+            if 'config' in account_detail and account_detail['config'] is not '':
+                account_config = json.loads(account_detail['config'])
+                acc_auth_cred = account_config.get('delegated_authority_credentials','N/A')
+                acc_user_cred = account_config.get('delegated_user_credential','N/A')
             # assigning values
             #if acc_auth_cred=={} or acc_auth_cred=='N/A':
             #    pi = "is_not_pi"