blob: 2a0092f1440aba1e598566ea6cdc1ef5d955788d [file] [log] [blame]
{% extends "base.html" %}
{% load get %}
{% load date_tag %}
{% load staticfiles %}
{% block head_block %}
{{ block.super }}
<link rel="stylesheet" href="/static/bower_components/select2/dist/css/select2.min.css">
<link rel="stylesheet" href="/static/bower_components/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/bower_components/datatables.net/js/jquery.dataTables.min.js"></script>
<script src="/static/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
<script src="/static/bower_components/select2/dist/js/select2.js"></script>
<script src="/static/src/userhandler/user_list.js"></script>
<script>
$(document).ready(function () {
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: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
}
]
});
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);
$("#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 modified successfully."
});
}).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 %}