ManageUser: Admin edit's user details
[myslice.git] / portal / usersview.py
1 from manifold.core.query        import Query
2 from unfold.page                import Page
3
4 from ui.topmenu                 import topmenu_items_live, the_user
5 from manifold.manifoldapi       import execute_admin_query
6
7 from plugins.querytable         import QueryTable
8 from unfold.loginrequired       import LoginRequiredAutoLogoutView
9
10 import json
11
12 # View for platforms
13 class UsersView(LoginRequiredAutoLogoutView):
14     template_name = "usersview.html"
15
16     def get_context_data(self, **kwargs):
17         page = Page(self.request)
18         page.add_js_files  ( [ "js/common.functions.js" ] )
19         #platform_query  = Query().get('local:platform').filter_by('disabled', '==', '0').select('platform','platform_longname','gateway_type')
20         #platform_query  = Query().get('local:platform').select('platform','platform_longname','gateway_type')
21         email_list = []
22         status_list = []
23         authority_list = []
24         config={}
25
26         user_query  = Query().get('local:user').select('email','status','config')
27         user_details = execute_admin_query(self.request, user_query)
28
29         for user in user_details:
30             # get email
31             email_list.append(user['email'])
32             # get status
33             if user['status'] == 0:
34                 user_status = 'Disabled'
35             elif user['status'] == 1:
36                 user_status = 'Validation Pending'
37             elif user['status'] == 2:
38                 user_status = 'Enabled'
39             else:
40                 user_status = 'N/A'
41
42             status_list.append(user_status)
43             #get authority
44             #if user['config']:
45             user_config = json.loads(user['config'])
46             user_authority = user_config.get('authority','N/A')
47             authority_list.append(user_authority)
48     
49         user_list = [{'email': t[0], 'status': t[1], 'authority':t[2]}
50             for t in zip(email_list, status_list, authority_list)]
51
52             
53         #page.enqueue_query(user_query)
54
55         #page.expose_js_metadata()
56         #userlist = QueryTable(
57         #    page  = page,
58         #    title = 'List',
59         #    domid = 'checkboxes',
60         #    # this is the query at the core of the slice list
61         #    query = user_query,
62         #    query_all = user_query,
63         #    checkboxes = False,
64         #    init_key   = 'user',
65         #    datatables_options = { 
66         #        'iDisplayLength': 10,
67         #        'bLengthChange' : True,
68         #        'bAutoWidth'    : True,
69         #        },
70         #)
71
72         context = super(UsersView, self).get_context_data(**kwargs)
73         context['person']   = self.request.user
74         context['user_list'] = user_list
75
76         # XXX This is repeated in all pages
77         # more general variables expected in the template
78         context['title'] = 'Users in MySlice'
79         # the menu items on the top
80         context['topmenu_items'] = topmenu_items_live('Users', page)
81         # so we can sho who is logged
82         context['username'] = the_user(self.request)
83
84         context.update(page.prelude_env())
85
86         context['layout_1_or_2']="layout-unfold2.html" if not context['username'] else "layout-unfold1.html"
87
88         return context