diff --git a/apps/assets/templates/assets/admin_user_create_update.html b/apps/assets/templates/assets/admin_user_create_update.html
index 5a2f3d6c959ecc19cadc0e8de2c04c2f911cdec5..c94a67a9e48e867c350d73522787ed9f3c6741ea 100644
--- a/apps/assets/templates/assets/admin_user_create_update.html
+++ b/apps/assets/templates/assets/admin_user_create_update.html
@@ -70,8 +70,6 @@ $(document).ready(function () {
     {% endif %}
     var form = $("form");
     var data = form.serializeObject();
-    console.log($("#id_private_key").data("file"));
-
     data["private_key"] = $("#id_private_key").data('file');
 
     var props = {
diff --git a/apps/assets/templates/assets/asset_list.html b/apps/assets/templates/assets/asset_list.html
index 0cdcb176a3735f99c3b31b139e4122106525a33e..a20d4f35f2dbb9ecb047d11cfd4c45edbe81dd18 100644
--- a/apps/assets/templates/assets/asset_list.html
+++ b/apps/assets/templates/assets/asset_list.html
@@ -346,8 +346,8 @@ $(document).ready(function(){
     var data = {
         'resources': id_list
     };
-    function refreshTag() {
-        $('#asset_list_table').DataTable().ajax.reload();
+    function refreshPage() {
+        setTimeout( function () {window.location.reload();}, 300);
     }
 
     function doDeactive() {
@@ -356,15 +356,11 @@ $(document).ready(function(){
             var obj = {"pk": object_id, "is_active": false};
             data.push(obj);
         });
-        function success() {
-            setTimeout( function () {
-                window.location.reload();}, 500);
-        }
         requestApi({
             url: the_url,
             method: 'PATCH',
             body: JSON.stringify(data),
-            success: success
+            success: refreshPage
         });
     }
     function doActive() {
@@ -373,15 +369,11 @@ $(document).ready(function(){
             var obj = {"pk": object_id, "is_active": true};
             data.push(obj);
         });
-        function success() {
-            setTimeout( function () {
-                window.location.reload();}, 300);
-        }
         requestApi({
             url: the_url,
             method: 'PATCH',
             body: JSON.stringify(data),
-            success: success
+            success: refreshPage
         });
     }
     function doDelete() {
@@ -400,7 +392,7 @@ $(document).ready(function(){
                 requestApi({
                     url:url,
                     method:'DELETE',
-                    success:refreshTag,
+                    success:refreshPage,
                     flash_message:false,
                 });
                 var msg = "{% trans 'Asset Deleted.' %}";
diff --git a/apps/assets/templates/assets/system_user_list.html b/apps/assets/templates/assets/system_user_list.html
index 621e18201b1b594c5bb30472a61e9d35020916fb..b48226f4123709086983a5ed2a4635b23ef8946e 100644
--- a/apps/assets/templates/assets/system_user_list.html
+++ b/apps/assets/templates/assets/system_user_list.html
@@ -78,43 +78,9 @@ function initTable() {
                 var detail_btn = '<a href="{% url "assets:system-user-detail" pk=DEFAULT_PK %}">' + cellData + '</a>';
                 $(td).html(detail_btn.replace('{{ DEFAULT_PK }}', rowData.id));
             }},
-            {#{targets: 6, createdCell: function (td, cellData) {#}
-            {#    var innerHtml = "";#}
-            {#    var data = cellData.reachable;#}
-            {#    if (data !== 0) {#}
-            {#        innerHtml = "<span class='text-navy'>" + data + "</span>";#}
-            {#    } else {#}
-            {#        innerHtml = "<span>" + data + "</span>";#}
-            {#    }#}
-            {#    $(td).html(innerHtml)#}
-            {#}},#}
-            {#{targets: 7, createdCell: function (td, cellData) {#}
-            {#    var data = cellData.unreachable;#}
-            {#    var innerHtml = "";#}
-            {#    if (data !== 0) {#}
-            {#        innerHtml = "<span class='text-danger'>" + data + "</span>";#}
-            {#    } else {#}
-            {#        innerHtml = "<span>" + data + "</span>";#}
-            {#    }#}
-            {#    $(td).html('<span href="javascript:void(0);" data-toggle="tooltip" title="' + data + '">' + innerHtml + '</span>');#}
-            {#}},#}
-            {#{targets: 8, createdCell: function (td, cellData, rowData) {#}
-            {#    var val = 0;#}
-            {#    var innerHtml = "";#}
-            {#    var total = rowData.assets_amount;#}
-            {#    var reachable = cellData.reachable;#}
-            {#    if (total && total !== 0) {#}
-            {#        val = reachable/total * 100;#}
-            {#    }#}
-            {##}
-            {#    if (val === 100) {#}
-            {#        innerHtml = "<span class='text-navy'>" + val + "% </span>";#}
-            {#    } else {#}
-            {#        var num = new Number(val);#}
-            {#        innerHtml = "<span class='text-danger'>" + num.toFixed(1) + "% </span>";#}
-            {#    }#}
-            {#    $(td).html('<span href="javascript:void(0);" data-toggle="tooltip" title="' + cellData + '">' + innerHtml + '</span>');#}
-            {#}},#}
+            {targets: 4, createdCell: function (td, cellData, rowData) {
+                $(td).html(rowData.login_mode_display);
+            }},
             {targets: 7, createdCell: function (td, cellData, rowData) {
                 var update_btn = '<a href="{% url "assets:system-user-update" pk=DEFAULT_PK %}" class="btn btn-xs m-l-xs btn-info">{% trans "Update" %}</a>'.replace('{{ DEFAULT_PK }}', cellData);
                 var del_btn = '<a class="btn btn-xs btn-danger m-l-xs btn_admin_user_delete" data-uid="{{ DEFAULT_PK }}">{% trans "Delete" %}</a>'.replace('{{ DEFAULT_PK }}', cellData);
@@ -123,8 +89,9 @@ function initTable() {
         ],
         ajax_url: '{% url "api-assets:system-user-list" %}',
         columns: [
-            {data: "id" }, {data: "name" }, {data: "username" }, {data: "protocol"}, {data: "login_mode_display"}, {data: "assets_amount" },
-            {data: "comment" }, {data: "id" }
+            {data: "id" }, {data: "name" }, {data: "username" }, {data: "protocol"},
+            {data: "login_mode"}, {data: "assets_amount", orderable: false },
+            {data: "comment" }, {data: "id", orderable: false }
         ],
         op_html: $('#actions').html()
     };
diff --git a/apps/jumpserver/views.py b/apps/jumpserver/views.py
index 9ad8f7b39f2e867867d112d34817d9e569800230..f9d692f31362051e42b6d76d17ea6ecc303428a7 100644
--- a/apps/jumpserver/views.py
+++ b/apps/jumpserver/views.py
@@ -100,13 +100,19 @@ class IndexView(PermissionsMixin, TemplateView):
         return self.session_month.values('user').distinct().count()
 
     def get_month_inactive_user_total(self):
-        return current_org.get_org_users().count() - self.get_month_active_user_total()
+        count = current_org.get_org_users().count() - self.get_month_active_user_total()
+        if count < 0:
+            count = 0
+        return count
 
     def get_month_active_asset_total(self):
         return self.session_month.values('asset').distinct().count()
 
     def get_month_inactive_asset_total(self):
-        return Asset.objects.all().count() - self.get_month_active_asset_total()
+        count = Asset.objects.all().count() - self.get_month_active_asset_total()
+        if count < 0:
+            count = 0
+        return count
 
     @staticmethod
     def get_user_disabled_total():
@@ -180,6 +186,7 @@ class IndexView(PermissionsMixin, TemplateView):
             'week_asset_hot_ten': self.get_week_top10_asset(),
             'last_login_ten': self.get_last10_sessions(),
             'week_user_hot_ten': self.get_week_top10_user(),
+            'app': _("Dashboard"),
         }
 
         kwargs.update(context)
diff --git a/apps/perms/api/mixin.py b/apps/perms/api/mixin.py
index 9c726691f6fc217ac05a0a2f0fb570491d22370b..17c7c833dbfe4fe09bf562b348dbc456539d33a8 100644
--- a/apps/perms/api/mixin.py
+++ b/apps/perms/api/mixin.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-from functools import reduce
+import uuid
 from hashlib import md5
 from django.core.cache import cache
 from django.db.models import Q
@@ -186,6 +186,20 @@ class GrantAssetsMixin(LabelFilterMixin):
         data = self.get_serializer_queryset(queryset_list)
         return super().get_serializer(data, many=True)
 
+    def filter_queryset_by_id(self, assets_items):
+        i = self.request.query_params.get("id")
+        if not i:
+            return assets_items
+        try:
+            pk = uuid.UUID(i)
+        except ValueError:
+            return assets_items
+        assets_map = {asset['id']: asset for asset in assets_items}
+        if pk in assets_map:
+            return [assets_map.get(pk)]
+        else:
+            return []
+
     def search_queryset(self, assets_items):
         search = self.request.query_params.get("search")
         if not search:
@@ -221,7 +235,8 @@ class GrantAssetsMixin(LabelFilterMixin):
         return [assets_map.get(asset_id) for asset_id in assets_ids_search]
 
     def filter_queryset(self, assets_items):
+        assets_items = self.filter_queryset_by_id(assets_items)
         assets_items = self.search_queryset(assets_items)
         assets_items = self.filter_queryset_by_label(assets_items)
         assets_items = self.sort_queryset(assets_items)
-        return assets_items
\ No newline at end of file
+        return assets_items
diff --git a/apps/perms/api/user_permission.py b/apps/perms/api/user_permission.py
index 13ee0795111a97409753e98e840e245c9ef8bb11..bb7a497267f06b21c804bf65f13d3bcd1f9c8d9c 100644
--- a/apps/perms/api/user_permission.py
+++ b/apps/perms/api/user_permission.py
@@ -1,10 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-import time
-import traceback
-from functools import reduce
 import uuid
-from django.db.models import Q
 from django.shortcuts import get_object_or_404
 from rest_framework.views import APIView, Response
 from rest_framework.generics import (
diff --git a/apps/templates/_header_bar.html b/apps/templates/_header_bar.html
index 7c7f696b38724846eaeb809c1e15cb4e889d8463..24469a633c6ee155371a7dcc8e86976b0d0680af 100644
--- a/apps/templates/_header_bar.html
+++ b/apps/templates/_header_bar.html
@@ -110,9 +110,6 @@
     <div class="col-sm-10">
         <h2></h2>
         <ol class="breadcrumb">
-            <li>
-                <a href="">{% trans 'Dashboard' %}</a>
-            </li>
             {% if app %}
             <li>
                 <a>{{ app }}</a>
diff --git a/apps/users/templates/users/_granted_assets.html b/apps/users/templates/users/_granted_assets.html
index 36cc27a1c4a847640f7e7820344541f5252e6354..8df8317e90d1acf2c3b666fd5c73216eea3496c8 100644
--- a/apps/users/templates/users/_granted_assets.html
+++ b/apps/users/templates/users/_granted_assets.html
@@ -12,11 +12,11 @@
 </div>
 <div class="col-lg-9 animated fadeInRight">
     <div class="mail-box-header">
-        <div class="btn-group" style="float: right">
-            <button data-toggle="dropdown" class="btn btn-default btn-sm labels dropdown-toggle">{% trans 'Label' %} <span class="caret"></span></button>
-            <ul class="dropdown-menu labels-menu">
-            </ul>
-        </div>
+{#        <div class="btn-group" style="float: right">#}
+{#            <button data-toggle="dropdown" class="btn btn-default btn-sm labels dropdown-toggle">{% trans 'Label' %} <span class="caret"></span></button>#}
+{#            <ul class="dropdown-menu labels-menu">#}
+{#            </ul>#}
+{#        </div>#}
         <table class="table table-striped table-bordered table-hover" id="user_assets_table" >
             <thead>
                 <tr>
diff --git a/apps/users/templates/users/user_list.html b/apps/users/templates/users/user_list.html
index 2dfab41f7230dedf4ec4fb48ac26721af3a6d080..0c74640dee35269896c27cfcb2d0f9cf4b86471d 100644
--- a/apps/users/templates/users/user_list.html
+++ b/apps/users/templates/users/user_list.html
@@ -76,10 +76,16 @@ function initTable() {
                 var detail_btn = '<a href="{% url "users:user-detail" pk=DEFAULT_PK %}">' + cellData + '</a>';
                 $(td).html(detail_btn.replace("{{ DEFAULT_PK }}", rowData.id));
              }},
+            {targets: 3, createdCell: function (td, cellData, rowData) {
+                $(td).html(rowData.role_display);
+             }},
             {targets: 4, createdCell: function (td, cellData) {
                 var innerHtml = cellData.length > 20 ? cellData.substring(0, 20) + '...': cellData;
                 $(td).html('<span href="javascript:void(0);" data-toggle="tooltip" title="' + cellData + '">' + innerHtml + '</span>');
              }},
+            {targets: 5, createdCell: function (td, cellData, rowData) {
+                $(td).html(rowData.source_display);
+             }},
             {targets: 6, createdCell: function (td, cellData, rowData) {
                 if (cellData) {
                     $(td).html('<i class="fa fa-check text-navy"></i>')
@@ -114,9 +120,9 @@ function initTable() {
         ajax_url: '{% url "api-users:user-list" %}',
         columns: [
             {data: "id"}, {data: "name" }, {data: "username" },
-            {data: "role_display", orderable: false},
+            {data: "role"},
             {data: "groups_display", orderable: false},
-            {data: "source_display", orderable: false},
+            {data: "source"},
             {data: "is_valid", orderable: false},
             {data: "id", orderable: false}
         ],
@@ -209,8 +215,8 @@ $(document).ready(function(){
     var data = {
         'resources': id_list
     };
-    function refreshTag() {
-        $('#user_list_table').DataTable().ajax.reload()
+    function reloadPage() {
+        setTimeout( function () {window.location.reload();}, 300);
     }
     function doDeactive() {
         var data = [];
@@ -218,15 +224,11 @@ $(document).ready(function(){
             var obj = {"pk": object_id, "is_active": false};
             data.push(obj);
         });
-        function success() {
-            setTimeout( function () {
-                window.location.reload();}, 300);
-        }
         requestApi({
             url: the_url,
             method: 'PATCH',
             body: JSON.stringify(data),
-            success: success
+            success: reloadPage
         });
     }
     function doActive() {
@@ -235,15 +237,11 @@ $(document).ready(function(){
             var obj = {"pk": object_id, "is_active": true};
             data.push(obj);
         });
-        function success() {
-            setTimeout( function () {
-                window.location.reload();}, 300);
-        }
         requestApi({
             url: the_url,
             method: 'PATCH',
             body: JSON.stringify(data),
-            success: success
+            success: reloadPage
         });
     }
     function doDelete() {
@@ -262,7 +260,7 @@ $(document).ready(function(){
                 requestApi({
                     url:url,
                     method:'DELETE',
-                    success:refreshTag,
+                    success:reloadPage,
                     flash_message:false,
                  });
                 var msg = "{% trans 'User Deleted.' %}";