mirror of https://github.com/jumpserver/jumpserver
Finish list paganation
parent
e89d3b3807
commit
205c11dfba
|
@ -233,6 +233,10 @@ class SystemUser(models.Model):
|
||||||
def assets_amount(self):
|
def assets_amount(self):
|
||||||
return self.assets.count()
|
return self.assets.count()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def asset_group_amount(self):
|
||||||
|
return self.asset_groups.count()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
db_table = 'system_user'
|
db_table = 'system_user'
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ class SystemUserSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
def get_field_names(self, declared_fields, info):
|
def get_field_names(self, declared_fields, info):
|
||||||
fields = super(SystemUserSerializer, self).get_field_names(declared_fields, info)
|
fields = super(SystemUserSerializer, self).get_field_names(declared_fields, info)
|
||||||
fields.append('assets_amount')
|
fields.extend(['assets_amount'])
|
||||||
return fields
|
return fields
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -39,13 +39,6 @@ $(document).ready(function(){
|
||||||
var innerHtml = cellData.length > 8 ? cellData.substring(0, 24) + '...': cellData;
|
var innerHtml = cellData.length > 8 ? cellData.substring(0, 24) + '...': cellData;
|
||||||
$(td).html('<a href="javascript:void(0);" data-toggle="tooltip" title="' + cellData + '">' + innerHtml + '</a>');
|
$(td).html('<a href="javascript:void(0);" data-toggle="tooltip" title="' + cellData + '">' + innerHtml + '</a>');
|
||||||
}},
|
}},
|
||||||
{# {targets: 6, createdCell: function (td, cellData) {#}
|
|
||||||
{# if (!cellData) {#}
|
|
||||||
{# $(td).html('<i class="fa fa-times text-danger"></i>')#}
|
|
||||||
{# } else {#}
|
|
||||||
{# $(td).html('<i class="fa fa-check text-navy"></i>')#}
|
|
||||||
{# }#}
|
|
||||||
{# }},#}
|
|
||||||
{targets: 6, createdCell: function (td, cellData, rowData) {
|
{targets: 6, createdCell: function (td, cellData, rowData) {
|
||||||
var script_btn = '<a href="{% url "assets:admin-user-update" pk=99991937 %}" class="btn btn-xs btn-primary">{% trans "Script" %}</a>'.replace('99991937', cellData);
|
var script_btn = '<a href="{% url "assets:admin-user-update" pk=99991937 %}" class="btn btn-xs btn-primary">{% trans "Script" %}</a>'.replace('99991937', cellData);
|
||||||
var update_btn = '<a href="{% url "assets:admin-user-update" pk=99991937 %}" class="btn btn-xs m-l-xs btn-info">{% trans "Update" %}</a>'.replace('99991937', cellData);
|
var update_btn = '<a href="{% url "assets:admin-user-update" pk=99991937 %}" class="btn btn-xs m-l-xs btn-info">{% trans "Update" %}</a>'.replace('99991937', cellData);
|
||||||
|
@ -55,7 +48,6 @@ $(document).ready(function(){
|
||||||
ajax_url: '{% url "api-assets:admin-user-list" %}',
|
ajax_url: '{% url "api-assets:admin-user-list" %}',
|
||||||
columns: [{data: function(){return ""}}, {data: "name" }, {data: "username" }, {data: "assets_amount" }, {data: function () {return 'lost'} },
|
columns: [{data: function(){return ""}}, {data: "name" }, {data: "username" }, {data: "assets_amount" }, {data: function () {return 'lost'} },
|
||||||
{data: "comment" }, {data: "id" }],
|
{data: "comment" }, {data: "id" }],
|
||||||
op_html: $('#actions').html()
|
|
||||||
};
|
};
|
||||||
jumpserver.initDataTable(options);
|
jumpserver.initDataTable(options);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,43 +1,60 @@
|
||||||
{% extends '_base_list.html' %}
|
{% extends '_base_list.html' %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% load common_tags %}
|
{% load common_tags %}
|
||||||
{% block content_left_head %}
|
|
||||||
|
{% block table_search %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block table_container %}
|
||||||
|
<div class="uc pull-left m-l-5 m-r-5">
|
||||||
<a href="{% url 'assets:system-user-create' %}" class="btn btn-sm btn-primary "> {% trans "Create system user" %} </a>
|
<a href="{% url 'assets:system-user-create' %}" class="btn btn-sm btn-primary "> {% trans "Create system user" %} </a>
|
||||||
|
</div>
|
||||||
|
<table class="table table-striped table-bordered table-hover " id="system_user_list_table" >
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="text-center">
|
||||||
|
<input type="checkbox" id="check_all" class="ipt_check_all" >
|
||||||
|
</th>
|
||||||
|
<th class="text-center">{% trans 'Name' %}</th>
|
||||||
|
<th class="text-center">{% trans 'Username' %}</th>
|
||||||
|
<th class="text-center">{% trans 'Asset' %}</th>
|
||||||
|
<th class="text-center">{% trans 'Unreachable' %}</th>
|
||||||
|
<th class="text-center">{% trans 'Comment' %}</th>
|
||||||
|
<th class="text-center">{% trans 'Action' %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{% endblock %}
|
||||||
|
{% block custom_foot_js %}
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
var options = {
|
||||||
|
ele: $('#system_user_list_table'),
|
||||||
|
columnDefs: [
|
||||||
|
{targets: 1, createdCell: function (td, cellData, rowData) {
|
||||||
|
var detail_btn = '<a href="{% url "assets:system-user-detail" pk=99991937 %}">' + cellData + '</a>';
|
||||||
|
$(td).html(detail_btn.replace('99991937', rowData.id));
|
||||||
|
}},
|
||||||
|
{targets: 5, createdCell: function (td, cellData) {
|
||||||
|
var innerHtml = cellData.length > 30 ? cellData.substring(0, 30) + '...': cellData;
|
||||||
|
$(td).html('<span href="javascript:void(0);" data-toggle="tooltip" title="' + cellData + '">' + innerHtml + '</span>');
|
||||||
|
}},
|
||||||
|
{targets: 6, createdCell: function (td, cellData, rowData) {
|
||||||
|
var script_btn = '<a href="{% url "assets:system-user-update" pk=99991937 %}" class="btn btn-xs btn-primary">{% trans "Script" %}</a>'.replace('99991937', cellData);
|
||||||
|
var update_btn = '<a href="{% url "assets:system-user-update" pk=99991937 %}" class="btn btn-xs m-l-xs btn-info">{% trans "Update" %}</a>'.replace('99991937', cellData);
|
||||||
|
var del_btn = '<a class="btn btn-xs btn-danger m-l-xs btn_admin_user_delete" data-uid="99991937">{% trans "Delete" %}</a>'.replace('99991937', cellData);
|
||||||
|
$(td).html(script_btn + update_btn + del_btn)
|
||||||
|
}}],
|
||||||
|
ajax_url: '{% url "api-assets:system-user-list" %}',
|
||||||
|
columns: [{data: "id" }, {data: "name" }, {data: "username" }, {data: "assets_amount" }, {data: function () { return "3"}},
|
||||||
|
{data: "comment" }, {data: "id" }],
|
||||||
|
};
|
||||||
|
jumpserver.initDataTable(options);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block table_head %}
|
|
||||||
<th class="text-center">{% trans 'ID' %}</th>
|
|
||||||
<th class="text-center"><a href="{% url 'assets:system-user-list' %}?sort=name">{% trans 'Name' %}</a></th>
|
|
||||||
<th class="text-center"><a href="{% url 'assets:system-user-list' %}?sort=username">{% trans 'Username' %}</a></th>
|
|
||||||
<th class="text-center">{% trans 'Asset num' %}</th>
|
|
||||||
<th class="text-center">{% trans 'Asset group num' %}</th>
|
|
||||||
<th class="text-center">{% trans 'Unreachable' %}</th>
|
|
||||||
<th class="text-center">{% trans 'Comment' %}</th>
|
|
||||||
<th class="text-center"></th>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block table_body %}
|
|
||||||
{% for system_user in system_user_list %}
|
|
||||||
<tr class="gradeX">
|
|
||||||
<td class="text-center">{{ system_user.id }}</td>
|
|
||||||
<td>
|
|
||||||
<a href="{% url 'assets:system-user-detail' pk=system_user.id %}">
|
|
||||||
{{ system_user.name }}
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td class="text-center">{{ system_user.username }}</td>
|
|
||||||
<td class="text-center">{{ system_user.get_assets|length }}</td>
|
|
||||||
<td class="text-center">{{ system_user.asset_groups.count }}</td>
|
|
||||||
<td class="text-center">{{ system_user.assets.count }}</td>
|
|
||||||
<td class="text-center">{{ system_user.comment|truncatewords:4 }}</td>
|
|
||||||
<td class="text-center">
|
|
||||||
<!-- Todo: Click script button will paste a url to clipboard like: curl http://url/system_user_create.sh | bash -->
|
|
||||||
<a href="{% url 'assets:system-user-update' pk=system_user.id %}" class="btn btn-xs btn-primary">{% trans 'Script' %}</a>
|
|
||||||
<!-- Todo: Click refresh button will run a task to test admin user could connect asset or not immediately -->
|
|
||||||
<a href="{% url 'assets:system-user-update' pk=system_user.id %}" class="btn btn-xs btn-warning">{% trans 'Refresh' %}</a>
|
|
||||||
<a href="{% url 'assets:system-user-update' pk=system_user.id %}" class="btn btn-xs btn-info">{% trans 'Update' %}</a>
|
|
||||||
<a onclick="obj_del(this,'{{ system_user.name }}','{% url 'assets:system-user-delete' system_user.id %}')" class="btn btn-xs btn-danger del">{% trans 'Delete' %}</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
|
@ -478,35 +478,17 @@ class AdminUserDeleteView(AdminUserRequiredMixin, DeleteView):
|
||||||
success_url = reverse_lazy('assets:admin-user-list')
|
success_url = reverse_lazy('assets:admin-user-list')
|
||||||
|
|
||||||
|
|
||||||
class SystemUserListView(AdminUserRequiredMixin, ListView):
|
class SystemUserListView(AdminUserRequiredMixin, TemplateView):
|
||||||
model = SystemUser
|
|
||||||
paginate_by = settings.CONFIG.DISPLAY_PER_PAGE
|
|
||||||
context_object_name = 'system_user_list'
|
|
||||||
template_name = 'assets/system_user_list.html'
|
template_name = 'assets/system_user_list.html'
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = {
|
context = {
|
||||||
'app': _('Assets'),
|
'app': _('Assets'),
|
||||||
'action': _('System user list'),
|
'action': _('System user list'),
|
||||||
'keyword': self.request.GET.get('keyword', '')
|
|
||||||
}
|
}
|
||||||
kwargs.update(context)
|
kwargs.update(context)
|
||||||
return super(SystemUserListView, self).get_context_data(**kwargs)
|
return super(SystemUserListView, self).get_context_data(**kwargs)
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
# Todo: Default order by lose asset connection num
|
|
||||||
self.queryset = super(SystemUserListView, self).get_queryset()
|
|
||||||
self.keyword = keyword = self.request.GET.get('keyword', '')
|
|
||||||
self.sort = sort = self.request.GET.get('sort', '-date_created')
|
|
||||||
|
|
||||||
if keyword:
|
|
||||||
self.queryset = self.queryset.filter(Q(name__icontains=keyword) |
|
|
||||||
Q(comment__icontains=keyword))
|
|
||||||
|
|
||||||
if sort:
|
|
||||||
self.queryset = self.queryset.order_by(sort)
|
|
||||||
return self.queryset
|
|
||||||
|
|
||||||
|
|
||||||
class SystemUserCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
|
class SystemUserCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
|
||||||
model = SystemUser
|
model = SystemUser
|
||||||
|
|
|
@ -292,7 +292,7 @@ jumpserver.initDataTable = function (options) {
|
||||||
columnDefs = options.columnDefs ? options.columnDefs.concat(columnDefs) : columnDefs;
|
columnDefs = options.columnDefs ? options.columnDefs.concat(columnDefs) : columnDefs;
|
||||||
var table = ele.DataTable({
|
var table = ele.DataTable({
|
||||||
pageLength: options.pageLength || 15,
|
pageLength: options.pageLength || 15,
|
||||||
dom: options.dom || '<"#uc.pull-left"><"html5buttons"B>flti<"row m-t"<"#op.col-md-6"><"col-md-6"p>>',
|
dom: options.dom || '<"#uc.pull-left">flt<"row m-t"<"col-md-8"<"#op.col-md-6"><"col-md-6 text-center"i>><"col-md-4"p>>',
|
||||||
language: {
|
language: {
|
||||||
url: options.i18n_url || "/static/js/plugins/dataTables/i18n/zh-hans.json"
|
url: options.i18n_url || "/static/js/plugins/dataTables/i18n/zh-hans.json"
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue