AiC and REST login
[myslice.git] / portal / usersview.py
index e9856c8..1314175 100644 (file)
@@ -1,23 +1,36 @@
+from django.contrib.auth        import authenticate, login, logout
+from django.template            import RequestContext
+from django.shortcuts           import render, render_to_response
+
+from manifoldapi.manifoldresult import ManifoldResult
+from ui.topmenu                 import topmenu_items, the_user
+from myslice.configengine       import ConfigEngine
 from manifold.core.query        import Query
 from unfold.page                import Page
-
-from ui.topmenu                 import topmenu_items_live, the_user
 from manifoldapi.manifoldapi    import execute_admin_query
-
-from plugins.querytable         import QueryTable
 from unfold.loginrequired       import LoginRequiredAutoLogoutView
-from theme import ThemeView
+
+from myslice.theme import ThemeView
 import json
 
-# View for platforms
-class UsersView(LoginRequiredAutoLogoutView, ThemeView):
-    template_name = "usersview.html"
+class UsersView (LoginRequiredAutoLogoutView, ThemeView):
+    template_name = 'usersview.html'
+        
+    # expose this so we can mention the backend URL on the welcome page
+    def default_env (self):
+        return { 
+                 'MANIFOLD_URL':ConfigEngine().manifold_url(),
+                 }
+
+    def post (self,request):
+        env = self.default_env()
+        env['theme'] = self.theme
+        return render_to_response(self.template, env, context_instance=RequestContext(request))
+
+    def get (self, request, state=None):
+        env = self.default_env()
+        
 
-    def get_context_data(self, **kwargs):
-        page = Page(self.request)
-        page.add_js_files  ( [ "js/common.functions.js" ] )
-        #platform_query  = Query().get('local:platform').filter_by('disabled', '==', '0').select('platform','platform_longname','gateway_type')
-        #platform_query  = Query().get('local:platform').select('platform','platform_longname','gateway_type')
         email_list = []
         status_list = []
         authority_list = []
@@ -41,48 +54,29 @@ class UsersView(LoginRequiredAutoLogoutView, ThemeView):
 
             status_list.append(user_status)
             #get authority
-            #if user['config']:
-            user_config = json.loads(user['config'])
-            user_authority = user_config.get('authority','N/A')
-            authority_list.append(user_authority)
+            if user['config'] is not None:
+                user_config = json.loads(user['config'])
+                user_authority = user_config.get('authority','N/A')
+                authority_list.append(user_authority)
     
         user_list = [{'email': t[0], 'status': t[1], 'authority':t[2]}
             for t in zip(email_list, status_list, authority_list)]
 
-            
-        #page.enqueue_query(user_query)
-
-        #page.expose_js_metadata()
-        #userlist = QueryTable(
-        #    page  = page,
-        #    title = 'List',
-        #    domid = 'checkboxes',
-        #    # this is the query at the core of the slice list
-        #    query = user_query,
-        #    query_all = user_query,
-        #    checkboxes = False,
-        #    init_key   = 'user',
-        #    datatables_options = { 
-        #        'iDisplayLength': 10,
-        #        'bLengthChange' : True,
-        #        'bAutoWidth'    : True,
-        #        },
-        #)
-
-        context = super(UsersView, self).get_context_data(**kwargs)
-        context['person']   = self.request.user
-        context['user_list'] = user_list
-
-        # XXX This is repeated in all pages
-        # more general variables expected in the template
-        context['title'] = 'Users in MySlice'
-        # the menu items on the top
-        context['topmenu_items'] = topmenu_items_live('Users', page)
-        # so we can sho who is logged
-        context['username'] = the_user(self.request)
-        context['theme'] = self.theme
-        context.update(page.prelude_env())
+        if request.user.is_authenticated(): 
+            env['person'] = self.request.user
+        else: 
+            env['person'] = None
+    
+        env['theme'] = self.theme
+        env['user_list']= user_list
 
-        context['layout_1_or_2']="layout-unfold2.html" if not context['username'] else "layout-unfold1.html"
+        env['username']=the_user(request)
+        env['topmenu_items'] = topmenu_items(None, request)
+        if state: env['state'] = state
+        elif not env['username']: env['state'] = None
+        # use one or two columns for the layout - not logged in users will see the login prompt
+        env['layout_1_or_2']="layout-unfold2.html" if not env['username'] else "layout-unfold1.html"
+        
+        
+        return render_to_response(self.template, env, context_instance=RequestContext(request))
 
-        return context