blob: 361784c7888887933a0fd50a44b28848f36d39d0 [file] [log] [blame]
lombardofr10b52d12018-07-17 23:42:28 +02001{% extends "base.html" %}
2{% load get %}
3{% load date_tag %}
4{% load staticfiles %}
5
6
7{% block head_block %}
8 {{ block.super }}
lombardofre5a130a2019-07-15 09:17:59 +02009 <link rel="stylesheet" href="/static/node_modules/select2/dist/css/select2.min.css">
10 <link rel="stylesheet" href="/static/node_modules/datatables.net-bs/css/dataTables.bootstrap.min.css">
lombardofr10b52d12018-07-17 23:42:28 +020011{% endblock %}
12{% block title_header_big %}
13 {{ block.super }}
14{% endblock %}
15{% block left_sidebar %}
16 {% include 'osm/osm_project_left_sidebar.html' %}
17{% endblock %}
18
19
20{% block breadcrumb_body %}
21 {{ block.super }}
22 <li><a href="#">Users</a></li>
23{% endblock %}
24
25{% block content_body %}
26 {{ block.super }}
27 {% include 'modal/user_details.html' %}
28 {% include 'modal/user_create.html' %}
lombardofr88d09562018-09-11 18:14:39 +020029 {% include 'modal/user_edit.html' %}
30
lombardofr10b52d12018-07-17 23:42:28 +020031 {% csrf_token %}
32 <div class="row">
33 <div class="col-md-12">
34
35 <div class="box">
36 <div class="box-header with-border">
37 <h3 class="box-title">Users</h3>
38 <div class="box-tools">
39 <button type="button" class="btn btn-default" data-container="body"
lombardofr88d09562018-09-11 18:14:39 +020040 onclick="javascript:openModalCreateUser({'projects_list_url': '{% url "projects:projects_list" %}'})"
41 data-toggle="tooltip" data-placement="top" title="New User">
lombardofr10b52d12018-07-17 23:42:28 +020042
lombardofr88d09562018-09-11 18:14:39 +020043 <i class="fa fa-plus"></i> Create User
44 </button>
lombardofr10b52d12018-07-17 23:42:28 +020045
46 </div>
47 </div>
48 <div class="box-body">
49 <table id="users_table" class="table table-bordered table-striped">
50 <thead>
51 <tr>
52 <th>Name</th>
53 <th>Projects</th>
54 <th>Identifier</th>
55 <th>Modified</th>
lombardofr88d09562018-09-11 18:14:39 +020056 <th>Created</th>
lombardofr10b52d12018-07-17 23:42:28 +020057 <th>Actions</th>
lombardofr10b52d12018-07-17 23:42:28 +020058 </tr>
59 </thead>
60 <tbody>
lombardofr10b52d12018-07-17 23:42:28 +020061 </tbody>
62 </table>
63 </div>
64 </div>
65 </div>
66
67 </div>
68{% endblock %}
69
70{% block resource_block %}
71 {{ block.super }}
lombardofre5a130a2019-07-15 09:17:59 +020072 <script src="/static/node_modules/datatables.net/js/jquery.dataTables.min.js"></script>
73 <script src="/static/node_modules/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
74 <script src="/static/node_modules/select2/dist/js/select2.js"></script>
lombardofr10b52d12018-07-17 23:42:28 +020075 <script src="/static/src/userhandler/user_list.js"></script>
lombardofr45e33ee2018-07-18 19:22:37 +020076 <script>
lombardofra91d0322019-05-19 13:24:36 +020077 var table;
lombardofr88d09562018-09-11 18:14:39 +020078 $(document).ready(function () {
lombardofra91d0322019-05-19 13:24:36 +020079 table = $('#users_table').DataTable({
lombardofr88d09562018-09-11 18:14:39 +020080 responsive: true,
81 "ajax": {
82 "url": "/admin/users/list",
83 "dataSrc": function (json) {
84 return json['users'];
85 },
86 statusCode: {
87 401: function () {
88 console.log("no auth");
89 moveToLogin(window.location.pathname);
90 }
91 },
92 "error": function (hxr, error, thrown) {
93 console.log(hxr)
94 console.log(thrown)
95 console.log(error);
lombardofr4908f382018-09-10 11:36:06 +020096 }
lombardofr4908f382018-09-10 11:36:06 +020097
lombardofr4908f382018-09-10 11:36:06 +020098 },
lombardofr88d09562018-09-11 18:14:39 +020099 "columns": [
100 {
101 "render": function (data, type, row) {
102 return row["username"];
103 },
104 "targets": 0
lombardofr4908f382018-09-10 11:36:06 +0200105 },
lombardofr88d09562018-09-11 18:14:39 +0200106 {
107 "render": function (data, type, row) {
108 return row['projects'];
109 },
110 "targets": 1
lombardofr4908f382018-09-10 11:36:06 +0200111 },
lombardofr88d09562018-09-11 18:14:39 +0200112 {
113 "render": function (data, type, row) {
114 return row['_id'];
115 },
116 "targets": 2
lombardofr4908f382018-09-10 11:36:06 +0200117 },
lombardofr88d09562018-09-11 18:14:39 +0200118 {
119 "render": function (data, type, row) {
120 return moment.unix(row["_admin"]['modified']).format('YYYY-MM-DD hh:mm:ss a');
121 },
122 "targets": 3
lombardofr4908f382018-09-10 11:36:06 +0200123 },
lombardofr88d09562018-09-11 18:14:39 +0200124 {
125 "render": function (data, type, row) {
126 return moment.unix(row["_admin"]['created']).format('YYYY-MM-DD hh:mm:ss a');
127 },
128 "targets": 4
lombardofr4908f382018-09-10 11:36:06 +0200129 },
lombardofr88d09562018-09-11 18:14:39 +0200130 {
131 "render": function (data, type, row) {
132 return '<div class="btn-group">' +
133 '<button type="button" class="btn btn-default dropdown-toggle"' +
134 'data-toggle="dropdown" aria-expanded="false">Actions ' +
135 '<span class="fa fa-caret-down"></span></button> ' +
136 '<ul class="dropdown-menu">' +
lombardofr8b12a9b2018-10-03 11:52:15 +0200137 '<li> <a href="#" onclick="javascript:openModalEditUser({user_id:\'' + row['_id'] + '\', usernarme:\'' + row['username'] + '\', projects: \'' + row['projects'] + '\'})">' +
138 '<i class="fa fa-edit"></i> Edit</a></li>' +
lombardofr88d09562018-09-11 18:14:39 +0200139 '<li> <a href="#" onclick="javascript:deleteUser(\'' + row['_id'] + '\', \'' + row['username'] + '\')"' +
140 'style="color:red"><i class="fa fa-trash"></i> Delete</a></li> </ul></div>';
141 },
lombardofr99a3d352019-01-06 19:41:34 +0100142 "targets": 5,
143 "orderable": false
lombardofr88d09562018-09-11 18:14:39 +0200144 }
145 ]
146 });
lombardofr4908f382018-09-10 11:36:06 +0200147
lombardofr8b12a9b2018-10-03 11:52:15 +0200148 var select2_groups = $('#projects_edit').select2({
149 placeholder: 'Select Projects',
150 width: '100%',
151 ajax: {
152 url: '/projects/list',
153 dataType: 'json',
154 processResults: function (data) {
155 projects = [];
156 if (data['projects']) {
157 for (d in data['projects']) {
158 var project = data['projects'][d];
159 projects.push({
160 "id": project['_id'],
161 "text": project['name']
162 });
163
164 }
165 }
166
167 return {
168 results: projects
169 };
170 }
171 }
172 });
173
174 var select2_single = $('#default_project_edit').select2({
175 placeholder: 'Select Default Project',
176 width: '100%',
177 ajax: {
178 url: '/projects/list',
179 dataType: 'json',
180 processResults: function (data) {
181 projects = [];
182 if (data['projects']) {
183 for (d in data['projects']) {
184 var project = data['projects'][d];
185 projects.push({
186 id: project['_id'],
187 text: project['name']
188 });
189 }
190 }
191
192 return {
193 results: projects
194 };
195 }
196 }
197 });
198
lombardofr88d09562018-09-11 18:14:39 +0200199 setInterval(function () {
lombardofr4908f382018-09-10 11:36:06 +0200200 table.ajax.reload();
201 }, 10000);
lombardofr88d09562018-09-11 18:14:39 +0200202
lombardofra91d0322019-05-19 13:24:36 +0200203 $("#formCreateUser").submit(function (event) {
204 event.preventDefault(); //prevent default action
205 var post_url = $(this).attr("action"); //get form action url
206 var request_method = $(this).attr("method");
207 var form_data = new FormData(this); //Encode form elements for submission
208
209 $.ajax({
210 url: post_url,
211 type: request_method,
212 data: form_data,
213 headers: {
214 "Accept": 'application/json'
215 },
216 contentType: false,
217 processData: false
218 }).done(function (response, textStatus, jqXHR) {
219 $('#modal_new_user').modal('hide');
220 table.ajax.reload();
221 bootbox.alert({
222 title: "Result",
223 message: "User successfully created."
224 });
225
226 }).fail(function (result) {
227 var data = result.responseJSON;
228 var title = "Error " + (data.code ? data.code : 'unknown');
229 var message = data.detail ? data.detail : 'No detail available.';
230 bootbox.alert({
231 title: title,
232 message: message
233 });
234 });
235 });
236
lombardofr88d09562018-09-11 18:14:39 +0200237 $("#formEditUser").submit(function (event) {
238 event.preventDefault(); //prevent default action
239 var post_url = $(this).attr("action"); //get form action url
lombardofr8b12a9b2018-10-03 11:52:15 +0200240 var request_method = $(this).attr("method");
lombardofr88d09562018-09-11 18:14:39 +0200241 var form_data = new FormData(this); //Encode form elements for submission
lombardofr8b12a9b2018-10-03 11:52:15 +0200242
lombardofr88d09562018-09-11 18:14:39 +0200243 $.ajax({
244 url: post_url,
245 type: request_method,
246 data: form_data,
247 headers: {
248 "Accept": 'application/json'
249 },
250 contentType: false,
251 processData: false
252 }).done(function (response, textStatus, jqXHR) {
253 $('#modal_edit_user').modal('hide');
lombardofr8b12a9b2018-10-03 11:52:15 +0200254 table.ajax.reload();
lombardofr88d09562018-09-11 18:14:39 +0200255 bootbox.alert({
256 title: "Result",
lombardofra91d0322019-05-19 13:24:36 +0200257 message: "User successfully modified."
lombardofr88d09562018-09-11 18:14:39 +0200258 });
lombardofr8b12a9b2018-10-03 11:52:15 +0200259
lombardofr88d09562018-09-11 18:14:39 +0200260 }).fail(function (result) {
261 var data = result.responseJSON;
262 var title = "Error " + (data.code ? data.code : 'unknown');
263 var message = data.detail ? data.detail : 'No detail available.';
264 bootbox.alert({
265 title: title,
266 message: message
267 });
268 });
269 });
lombardofra91d0322019-05-19 13:24:36 +0200270
lombardofr88d09562018-09-11 18:14:39 +0200271 });
lombardofr45e33ee2018-07-18 19:22:37 +0200272 </script>
lombardofr10b52d12018-07-17 23:42:28 +0200273
274
275{% endblock %}
276
277{% block footer %}
278 {% include "footer.html" %}
279{% endblock %}