AdminView: user management view created
authorYasin <mohammed-yasin.rahman@lip6.fr>
Wed, 12 Feb 2014 13:38:00 +0000 (14:38 +0100)
committerYasin <mohammed-yasin.rahman@lip6.fr>
Wed, 12 Feb 2014 13:38:00 +0000 (14:38 +0100)
portal/adminview.py [new file with mode: 0644]
portal/templates/adminview.html [new file with mode: 0644]
portal/urls.py

diff --git a/portal/adminview.py b/portal/adminview.py
new file mode 100644 (file)
index 0000000..3400ad1
--- /dev/null
@@ -0,0 +1,67 @@
+from manifold.core.query        import Query
+from unfold.page                import Page
+
+from ui.topmenu                 import topmenu_items_live, the_user
+from manifold.manifoldapi       import execute_admin_query
+
+from plugins.querytable         import QueryTable
+from unfold.loginrequired       import LoginRequiredAutoLogoutView
+
+
+# View for platforms
+class AdminView(LoginRequiredAutoLogoutView):
+    template_name = "adminview.html"
+
+    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 = []
+        user_query  = Query().get('local:user').select('email','status')
+        user_details = execute_admin_query(self.request, user_query)
+        for user in user_details:
+            email_list.append(user['email'])
+            status_list.append(user['status'])
+
+        user_list = [{'email': t[0], 'status': t[1]}
+            for t in zip(email_list, status_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(AdminView, 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('Admin', page)
+        # so we can sho who is logged
+        context['username'] = the_user(self.request)
+
+        context.update(page.prelude_env())
+
+        context['layout_1_or_2']="layout-unfold2.html" if not context['username'] else "layout-unfold1.html"
+
+        return context
diff --git a/portal/templates/adminview.html b/portal/templates/adminview.html
new file mode 100644 (file)
index 0000000..63eb3d5
--- /dev/null
@@ -0,0 +1,34 @@
+{# fine for either layout-unfold1.html (logged in) or layout-unfold2.html (needs a login prompt) #}
+{% extends layout_1_or_2 %}
+
+{% block unfold_margin %}
+{% include 'widget-login.html' %}
+{% endblock unfold_margin %}
+
+{% block head %}
+<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/css/dashboard.css" />
+{% endblock %}
+
+{% block unfold_main %}
+
+<h1>Users</h1>
+<div id="middle" align="center">
+    <div class="well">
+        <table class="mytable table table-bordered table-hover">
+            <tr class="odd">
+                <th>Email</th>
+                <th>Status</th>
+            </tr>
+            {% for user in user_list %}
+            <tr class="border_bottom">
+                <td class="odd"> {{ user.email }} </td>
+                               <td class="even"> {{ user.status }} </td>
+
+            </tr>
+            {%endfor%}
+        </table>
+    </div>
+</div>
+</div>
+
+{% endblock %}
index 8dc968f..8e7f286 100644 (file)
@@ -23,6 +23,7 @@
 from django.views.generic.base   import TemplateView
 from django.conf.urls           import patterns, include, url
 
+from portal.adminview           import AdminView
 from portal.platformsview       import PlatformsView
 from portal.platformview        import PlatformView
 from portal.resourceview        import ResourceView
@@ -58,6 +59,7 @@ urlpatterns = patterns('',
     url(r'^dashboard/?$', DashboardView.as_view(), name='dashboard'),
     #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='admin'),
     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'),