##// END OF EJS Templates
user-account: expose membership of user groups to users....
marcink -
r2496:3250285e default
parent child Browse files
Show More
@@ -0,0 +1,75 b''
1 ## -*- coding: utf-8 -*-
2
3 <div class="panel panel-default">
4 <div class="panel-heading">
5 <h3 class="panel-title">${_('User Group Membership')}</h3>
6 </div>
7
8 <div class="panel-body">
9 <div class="groups_management">
10 <div id="repos_list_wrap">
11 <table id="user_group_list_table" class="display"></table>
12 </div>
13 </div>
14 </div>
15 </div>
16
17
18 <script>
19 var api;
20 $(document).ready(function() {
21
22 var get_datatable_count = function(){
23 $('#user_group_count').text(api.page.info().recordsDisplay);
24 };
25
26 $('#user_group_list_table').on('click', 'a.editor_remove', function (e) {
27 e.preventDefault();
28 var row = api.row($(this).closest('tr'));
29 row.remove().draw();
30 } );
31
32 $('#user_group_list_table').DataTable({
33 data: ${c.user_groups|n},
34 dom: 'rtp',
35 pageLength: ${c.visual.admin_grid_items},
36 order: [[ 0, "asc" ]],
37 columns: [
38 { data: {"_": "group_name",
39 "sort": "group_name"}, title: "${_('Name')}", className: "td-componentname," ,
40 render: function (data,type,full,meta)
41 {return '<div><i class="icon-group" title="User group">'+data+'</i></div>'}},
42
43 { data: {"_": "group_description",
44 "sort": "group_description"}, title: "${_('Description')}", className: "td-description" },
45 { data: {"_": "users_group_id"}, className: "td-user",
46 render: function (data,type,full,meta)
47 {return '<input type="hidden" name="users_group_id" value="'+data+'">'}},
48 { data: {"_": "active",
49 "sort": "active"}, title: "${_('Active')}", className: "td-active"},
50 { data: {"_": "owner_data"}, title: "${_('Owner')}", className: "td-user",
51 render: function (data,type,full,meta)
52 {return '<div class="rc-user tooltip">'+
53 '<img class="gravatar" src="'+ data.owner_icon +'" height="16" width="16">'+
54 data.owner +'</div>'
55 }
56 }
57 ],
58 language: {
59 paginate: DEFAULT_GRID_PAGINATION,
60 emptyTable: _gettext("No user groups available yet.")
61 },
62 "initComplete": function( settings, json ) {
63 var data_grid = $('#user_group_list_table').dataTable();
64 api = data_grid.api();
65 get_datatable_count();
66 }
67 });
68
69 // update the counter when doing search
70 $('#user_group_list_table').on( 'search.dt', function (e,settings) {
71 get_datatable_count();
72 });
73
74 });
75 </script> No newline at end of file
@@ -70,6 +70,11 b' def includeme(config):'
70 70 name='my_account_ssh_keys_delete',
71 71 pattern=ADMIN_PREFIX + '/my_account/ssh_keys/delete')
72 72
73 # my account user group membership
74 config.add_route(
75 name='my_account_user_group_membership',
76 pattern=ADMIN_PREFIX + '/my_account/user_group_membership')
77
73 78 # my account emails
74 79 config.add_route(
75 80 name='my_account_emails',
@@ -48,6 +48,7 b' from rhodecode.model.pull_request import'
48 48 from rhodecode.model.scm import RepoList
49 49 from rhodecode.model.user import UserModel
50 50 from rhodecode.model.repo import RepoModel
51 from rhodecode.model.user_group import UserGroupModel
51 52 from rhodecode.model.validation_schema.schemas import user_schema
52 53
53 54 log = logging.getLogger(__name__)
@@ -583,3 +584,16 b' class MyAccountView(BaseAppView, DataGri'
583 584 data = self._get_pull_requests_list(statuses=statuses)
584 585 return data
585 586
587 @LoginRequired()
588 @NotAnonymous()
589 @view_config(
590 route_name='my_account_user_group_membership',
591 request_method='GET',
592 renderer='rhodecode:templates/admin/my_account/my_account.mako')
593 def my_account_user_group_membership(self):
594 c = self.load_default_context()
595 c.active = 'user_group_membership'
596 groups = [UserGroupModel.get_user_groups_as_dict(group.users_group)
597 for group in self._rhodecode_db_user.group_member]
598 c.user_groups = json.dumps(groups)
599 return self._get_template_context(c)
@@ -30,6 +30,8 b''
30 30 <li class="${'active' if c.active=='password' else ''}"><a href="${h.route_path('my_account_password')}">${_('Password')}</a></li>
31 31 <li class="${'active' if c.active=='auth_tokens' else ''}"><a href="${h.route_path('my_account_auth_tokens')}">${_('Auth Tokens')}</a></li>
32 32 <li class="${'active' if c.active in ['ssh_keys', 'ssh_keys_generate'] else ''}"><a href="${h.route_path('my_account_ssh_keys')}">${_('SSH Keys')}</a></li>
33 <li class="${'active' if c.active=='user_group_membership' else ''}"><a href="${h.route_path('my_account_user_group_membership')}">${_('User Group Membership')}</a></li>
34
33 35 ## TODO: Find a better integration of oauth views into navigation.
34 36 <% my_account_oauth_url = h.route_path_or_none('my_account_oauth') %>
35 37 % if my_account_oauth_url:
General Comments 0
You need to be logged in to leave comments. Login now