CLoudLab integration
[myslice.git] / portal / cloudlabview.py
diff --git a/portal/cloudlabview.py b/portal/cloudlabview.py
new file mode 100644 (file)
index 0000000..aabc396
--- /dev/null
@@ -0,0 +1,53 @@
+import json
+from django.core.context_processors import csrf
+from django.http import HttpResponseRedirect
+from django.contrib.auth import authenticate, login, logout
+from django.template import RequestContext
+from django.shortcuts import render_to_response
+from django.shortcuts import render
+
+from unfold.loginrequired import LoginRequiredAutoLogoutView
+from manifold.core.query     import Query
+from manifoldapi.manifoldapi import execute_query
+
+from manifoldapi.manifoldresult import ManifoldResult
+from myslice.configengine import ConfigEngine
+
+from myslice.theme import ThemeView
+from myslice.settings                   import logger
+
+class CloudView (LoginRequiredAutoLogoutView, ThemeView):
+    template_name = 'cloudlab.html'
+
+    def get (self, request, state=None):
+        env = {}
+        pkey = None
+        cert = None
+        account_query  = Query().get('local:account').select('user_id','platform_id','auth_type','config')
+        account_details = execute_query(self.request, account_query)
+        # Get the accounts of the current logged in user
+        for account_detail in account_details:
+            try:
+                account_config = json.loads(account_detail['config'])
+                if 'user_private_key' in account_config:
+                    pkey = account_config['user_private_key']
+                if 'gid' in account_config:
+                    cert = account_config['gid']
+            except ValueError as e:
+                print('not a JSON')
+
+        env['supername'] = 'Amira'
+        env['cert'] = cert
+        env['key'] = pkey                                                      
+        if request.user.is_authenticated(): 
+            env['person'] = self.request.user
+            env['username'] = self.request.user
+        else: 
+            env['person'] = None
+            env['username'] = None
+    
+        env['theme'] = self.theme
+        env['section'] = ""
+
+        return render_to_response(self.template_name, env, context_instance=RequestContext(request))
+