automatic reload on lists; new django decorator for ajax request
Change-Id: I3eb41de76217191268acb6053ad0c04aec0e8388
Signed-off-by: lombardofr <lombardo@everyup.it>
diff --git a/userhandler/templates/user_list.html b/userhandler/templates/user_list.html
index 8d7e84a..621df92 100644
--- a/userhandler/templates/user_list.html
+++ b/userhandler/templates/user_list.html
@@ -56,34 +56,7 @@
</tr>
</thead>
<tbody>
- {% for s in users %}
- <tr>
- <td>{{ s|get:"username" }}</td>
- <td>{{ s|get:"projects" }}</td>
- <td>{{ s|get:"_id" }}</td>
- <td>{{ s|get_sub:"_admin,modified"|get_date}}</td>
- <td>{{ s|get_sub:"_admin,created"|get_date}}</td>
-
- <td>
-
- <div class="btn-group">
- <button type="button" class="btn btn-default dropdown-toggle"
- data-toggle="dropdown" aria-expanded="false">Actions
- <span class="fa fa-caret-down"></span></button>
- <ul class="dropdown-menu">
-
- <li>
- <a href="#" onclick="javascript:deleteUser('{% url "users:delete" user_id=s|get:"_id" %}')" style="color:red">
- <i class="fa fa-trash" ></i> Delete</a>
-
- </li>
- </ul>
- </div>
- </td>
-
- </tr>
- {% endfor %}
</tbody>
</table>
</div>
@@ -101,8 +74,76 @@
<script src="/static/src/userhandler/user_list.js"></script>
<script>
$(document).ready( function () {
- $('#users_table').DataTable();
- } );
+ var table = $('#users_table').DataTable({
+ responsive: true,
+ "ajax": {
+ "url": "/admin/users/list",
+ "dataSrc": function (json) {
+ return json['users'];
+ },
+ statusCode: {
+ 401: function () {
+ console.log("no auth");
+ moveToLogin(window.location.pathname);
+ }
+ },
+ "error": function (hxr, error, thrown) {
+ console.log(hxr)
+ console.log(thrown)
+ console.log(error);
+ }
+
+ },
+ "columns": [
+ {
+ "render": function (data, type, row) {
+ return row["username"];
+ },
+ "targets": 0
+ },
+ {
+ "render": function (data, type, row) {
+ return row['projects'];
+ },
+ "targets": 1
+ },
+ {
+ "render": function (data, type, row) {
+ return row['_id'];
+ },
+ "targets": 2
+ },
+ {
+ "render": function (data, type, row) {
+ return moment.unix(row["_admin"]['modified']).format('YYYY-MM-DD hh:mm:ss a');
+ },
+ "targets": 3
+ },
+ {
+ "render": function (data, type, row) {
+ return moment.unix(row["_admin"]['created']).format('YYYY-MM-DD hh:mm:ss a');;
+ },
+ "targets": 4
+ },
+ {
+ "render": function (data, type, row) {
+ return '<div class="btn-group">' +
+ '<button type="button" class="btn btn-default dropdown-toggle"' +
+ 'data-toggle="dropdown" aria-expanded="false">Actions ' +
+ '<span class="fa fa-caret-down"></span></button> ' +
+ '<ul class="dropdown-menu">' +
+ '<li> <a href="#" onclick="javascript:deleteUser(\'' + row['_id'] + '\', \''+row['username']+'\')"' +
+ 'style="color:red"><i class="fa fa-trash"></i> Delete</a></li> </ul></div>';
+ },
+ "targets": 5
+ }
+ ]
+ });
+
+ setInterval(function () {
+ table.ajax.reload();
+ }, 10000);
+ });
</script>
diff --git a/userhandler/views.py b/userhandler/views.py
index 8e312fa..aa0d8d2 100644
--- a/userhandler/views.py
+++ b/userhandler/views.py
@@ -1,5 +1,5 @@
from django.shortcuts import render, redirect
-from django.contrib.auth.decorators import login_required
+from sf_t3d.decorators import login_required
from django.http import HttpResponse
import json
import logging