| {% extends "base.html" %} |
| {% load get %} |
| {% load date_tag %} |
| {% load staticfiles %} |
| |
| |
| {% block head_block %} |
| {{ block.super }} |
| <link rel="stylesheet" href="/static/node_modules/select2/dist/css/select2.min.css"> |
| <link rel="stylesheet" href="/static/node_modules/datatables.net-bs/css/dataTables.bootstrap.min.css"> |
| {% endblock %} |
| {% block title_header_big %} |
| {{ block.super }} |
| {% endblock %} |
| {% block left_sidebar %} |
| {% include 'osm/osm_project_left_sidebar.html' %} |
| {% endblock %} |
| |
| |
| {% block breadcrumb_body %} |
| {{ block.super }} |
| <li><a href="#">Users</a></li> |
| {% endblock %} |
| |
| {% block content_body %} |
| {{ block.super }} |
| {% include 'modal/user_details.html' %} |
| {% include 'modal/user_create.html' %} |
| {% include 'modal/user_edit.html' %} |
| |
| {% csrf_token %} |
| <div class="row"> |
| <div class="col-md-12"> |
| |
| <div class="box"> |
| <div class="box-header with-border"> |
| <h3 class="box-title">Users</h3> |
| <div class="box-tools"> |
| <button type="button" class="btn btn-default" data-container="body" |
| onclick="javascript:openModalCreateUser({'projects_list_url': '{% url "projects:projects_list" %}'})" |
| data-toggle="tooltip" data-placement="top" title="New User"> |
| |
| <i class="fa fa-plus"></i> Create User |
| </button> |
| |
| </div> |
| </div> |
| <div class="box-body"> |
| <table id="users_table" class="table table-bordered table-striped"> |
| <thead> |
| <tr> |
| <th>Name</th> |
| <th>Projects</th> |
| <th>Identifier</th> |
| <th>Modified</th> |
| <th>Created</th> |
| <th>Actions</th> |
| </tr> |
| </thead> |
| <tbody> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| </div> |
| |
| </div> |
| {% endblock %} |
| |
| {% block resource_block %} |
| {{ block.super }} |
| <script src="/static/node_modules/datatables.net/js/jquery.dataTables.min.js"></script> |
| <script src="/static/node_modules/datatables.net-bs/js/dataTables.bootstrap.min.js"></script> |
| <script src="/static/node_modules/select2/dist/js/select2.js"></script> |
| <script src="/static/src/userhandler/user_list.js"></script> |
| <script> |
| var table; |
| $(document).ready(function () { |
| 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:openModalEditUser({user_id:\'' + row['_id'] + '\', usernarme:\'' + row['username'] + '\', projects: \'' + row['projects'] + '\'})">' + |
| '<i class="fa fa-edit"></i> Edit</a></li>' + |
| '<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, |
| "orderable": false |
| } |
| ] |
| }); |
| |
| var select2_groups = $('#projects_edit').select2({ |
| placeholder: 'Select Projects', |
| width: '100%', |
| ajax: { |
| url: '/projects/list', |
| dataType: 'json', |
| processResults: function (data) { |
| projects = []; |
| if (data['projects']) { |
| for (d in data['projects']) { |
| var project = data['projects'][d]; |
| projects.push({ |
| "id": project['_id'], |
| "text": project['name'] |
| }); |
| |
| } |
| } |
| |
| return { |
| results: projects |
| }; |
| } |
| } |
| }); |
| |
| var select2_single = $('#default_project_edit').select2({ |
| placeholder: 'Select Default Project', |
| width: '100%', |
| ajax: { |
| url: '/projects/list', |
| dataType: 'json', |
| processResults: function (data) { |
| projects = []; |
| if (data['projects']) { |
| for (d in data['projects']) { |
| var project = data['projects'][d]; |
| projects.push({ |
| id: project['_id'], |
| text: project['name'] |
| }); |
| } |
| } |
| |
| return { |
| results: projects |
| }; |
| } |
| } |
| }); |
| |
| setInterval(function () { |
| table.ajax.reload(); |
| }, 10000); |
| |
| $("#formCreateUser").submit(function (event) { |
| event.preventDefault(); //prevent default action |
| var post_url = $(this).attr("action"); //get form action url |
| var request_method = $(this).attr("method"); |
| var form_data = new FormData(this); //Encode form elements for submission |
| |
| $.ajax({ |
| url: post_url, |
| type: request_method, |
| data: form_data, |
| headers: { |
| "Accept": 'application/json' |
| }, |
| contentType: false, |
| processData: false |
| }).done(function (response, textStatus, jqXHR) { |
| $('#modal_new_user').modal('hide'); |
| table.ajax.reload(); |
| bootbox.alert({ |
| title: "Result", |
| message: "User successfully created." |
| }); |
| |
| }).fail(function (result) { |
| var data = result.responseJSON; |
| var title = "Error " + (data.code ? data.code : 'unknown'); |
| var message = data.detail ? data.detail : 'No detail available.'; |
| bootbox.alert({ |
| title: title, |
| message: message |
| }); |
| }); |
| }); |
| |
| $("#formEditUser").submit(function (event) { |
| event.preventDefault(); //prevent default action |
| var post_url = $(this).attr("action"); //get form action url |
| var request_method = $(this).attr("method"); |
| var form_data = new FormData(this); //Encode form elements for submission |
| |
| $.ajax({ |
| url: post_url, |
| type: request_method, |
| data: form_data, |
| headers: { |
| "Accept": 'application/json' |
| }, |
| contentType: false, |
| processData: false |
| }).done(function (response, textStatus, jqXHR) { |
| $('#modal_edit_user').modal('hide'); |
| table.ajax.reload(); |
| bootbox.alert({ |
| title: "Result", |
| message: "User successfully modified." |
| }); |
| |
| }).fail(function (result) { |
| var data = result.responseJSON; |
| var title = "Error " + (data.code ? data.code : 'unknown'); |
| var message = data.detail ? data.detail : 'No detail available.'; |
| bootbox.alert({ |
| title: title, |
| message: message |
| }); |
| }); |
| }); |
| |
| }); |
| </script> |
| |
| |
| {% endblock %} |
| |
| {% block footer %} |
| {% include "footer.html" %} |
| {% endblock %} |