diff --git a/apps/assets/templates/assets/system_user_detail.html b/apps/assets/templates/assets/system_user_detail.html
index 0bf591bb2..46cabb336 100644
--- a/apps/assets/templates/assets/system_user_detail.html
+++ b/apps/assets/templates/assets/system_user_detail.html
@@ -17,11 +17,11 @@
@@ -130,6 +130,23 @@
+
#}
{# {% trans 'Change auth period' %}: | #}
{# #}
@@ -144,7 +161,7 @@
- {% trans 'Clusters' %}
+ {% trans 'Nodes' %}
@@ -152,9 +169,9 @@
- {% for cluster in system_user.cluster.all %}
+ {% for node in system_user.nodes.all %}
- {{ cluster.name }} |
+ {{ node.name }} |
|
@@ -201,7 +218,7 @@ function updateSystemUserCluster(clusters) {
// change tr html of user groups.
$('.cluster_edit tbody').append(
' ' +
- '' + cluster_name + ' | ' +
+ '' + cluster_name + ' | ' +
' | ' +
' '
)
@@ -242,7 +259,7 @@ $(document).ready(function () {
if (Object.keys(jumpserver.cluster_selected).length === 0) {
return false;
}
- var clusters = $('.bdg_cluster').map(function() {
+ var clusters = $('.bdg_node').map(function() {
return $(this).data('gid');
}).get();
$.map(jumpserver.cluster_selected, function(value, index) {
@@ -253,14 +270,14 @@ $(document).ready(function () {
.on('click', '.btn-remove-from-cluster', function() {
var $this = $(this);
var $tr = $this.closest('tr');
- var $badge = $tr.find('.bdg_cluster');
+ var $badge = $tr.find('.bdg_node');
var gid = $badge.data('gid');
var cluster_name = $badge.html() || $badge.text();
$('#groups_selected').append(
''
);
$tr.remove();
- var clusters = $('.bdg_cluster').map(function () {
+ var clusters = $('.bdg_node').map(function () {
return $(this).data('gid');
}).get();
updateSystemUserCluster(clusters);
diff --git a/apps/assets/urls/api_urls.py b/apps/assets/urls/api_urls.py
index 8847b6397..236a1f854 100644
--- a/apps/assets/urls/api_urls.py
+++ b/apps/assets/urls/api_urls.py
@@ -35,8 +35,8 @@ urlpatterns = [
# api.ClusterAddAssetsApi.as_view(), name='cluster-add-assets'),
#url(r'^v1/cluster/(?P[0-9a-zA-Z\-]{36})/assets/connective/$',
# api.ClusterTestAssetsAliveApi.as_view(), name='cluster-test-connective'),
- url(r'^v1/admin-user/(?P[0-9a-zA-Z\-]{36})/clusters/$',
- api.AdminUserAddClustersApi.as_view(), name='admin-user-add-clusters'),
+ url(r'^v1/admin-user/(?P[0-9a-zA-Z\-]{36})/nodes/$',
+ api.ReplaceNodesAdminUserApi.as_view(), name='replace-nodes-admin-user'),
url(r'^v1/admin-user/(?P[0-9a-zA-Z\-]{36})/connective/$',
api.AdminUserTestConnectiveApi.as_view(), name='admin-user-connective'),
url(r'^v1/system-user/(?P[0-9a-zA-Z\-]{36})/push/$',
diff --git a/apps/assets/urls/views_urls.py b/apps/assets/urls/views_urls.py
index 1704531d2..545e7b062 100644
--- a/apps/assets/urls/views_urls.py
+++ b/apps/assets/urls/views_urls.py
@@ -14,27 +14,11 @@ urlpatterns = [
url(r'^asset/(?P[0-9a-zA-Z\-]{36})/$', views.AssetDetailView.as_view(), name='asset-detail'),
url(r'^asset/(?P[0-9a-zA-Z\-]{36})/update/$', views.AssetUpdateView.as_view(), name='asset-update'),
url(r'^asset/(?P[0-9a-zA-Z\-]{36})/delete/$', views.AssetDeleteView.as_view(), name='asset-delete'),
- url(r'^asset-modal$', views.AssetModalListView.as_view(), name='asset-modal-list'),
url(r'^asset/update/$', views.AssetBulkUpdateView.as_view(), name='asset-bulk-update'),
# User asset view
url(r'^user-asset/$', views.UserAssetListView.as_view(), name='user-asset-list'),
- # # Resource asset group url
- # url(r'^asset-group/$', views.AssetGroupListView.as_view(), name='asset-group-list'),
- # url(r'^asset-group/create/$', views.AssetGroupCreateView.as_view(), name='asset-group-create'),
- # url(r'^asset-group/(?P[0-9a-zA-Z\-]{36})/$', views.AssetGroupDetailView.as_view(), name='asset-group-detail'),
- # url(r'^asset-group/(?P[0-9a-zA-Z\-]{36})/update/$', views.AssetGroupUpdateView.as_view(), name='asset-group-update'),
- # url(r'^asset-group/(?P[0-9a-zA-Z\-]{36})/delete/$', views.AssetGroupDeleteView.as_view(), name='asset-group-delete'),
-
- # Resource cluster url
- # url(r'^cluster/$', views.ClusterListView.as_view(), name='cluster-list'),
- # url(r'^cluster/create/$', views.ClusterCreateView.as_view(), name='cluster-create'),
- # url(r'^cluster/(?P[0-9a-zA-Z\-]{36})/$', views.ClusterDetailView.as_view(), name='cluster-detail'),
- # url(r'^cluster/(?P[0-9a-zA-Z\-]{36})/update/', views.ClusterUpdateView.as_view(), name='cluster-update'),
- # url(r'^cluster/(?P[0-9a-zA-Z\-]{36})/delete/$', views.ClusterDeleteView.as_view(), name='cluster-delete'),
- # url(r'^cluster/(?P[0-9a-zA-Z\-]{36})/assets/$', views.ClusterAssetsView.as_view(), name='cluster-assets'),
-
# Resource admin user url
url(r'^admin-user/$', views.AdminUserListView.as_view(), name='admin-user-list'),
url(r'^admin-user/create/$', views.AdminUserCreateView.as_view(), name='admin-user-create'),
@@ -50,14 +34,10 @@ urlpatterns = [
url(r'^system-user/(?P[0-9a-zA-Z\-]{36})/update/$', views.SystemUserUpdateView.as_view(), name='system-user-update'),
url(r'^system-user/(?P[0-9a-zA-Z\-]{36})/delete/$', views.SystemUserDeleteView.as_view(), name='system-user-delete'),
url(r'^system-user/(?P[0-9a-zA-Z\-]{36})/asset/$', views.SystemUserAssetView.as_view(), name='system-user-asset'),
- # url(r'^system-user/(?P[0-9a-zA-Z\-]{36})/asset-group$', views.SystemUserAssetGroupView.as_view(),
- # name='system-user-asset-group'),
url(r'^label/$', views.LabelListView.as_view(), name='label-list'),
url(r'^label/create/$', views.LabelCreateView.as_view(), name='label-create'),
url(r'^label/(?P[0-9a-zA-Z\-]{36})/update/$', views.LabelUpdateView.as_view(), name='label-update'),
url(r'^label/(?P[0-9a-zA-Z\-]{36})/delete/$', views.LabelDeleteView.as_view(), name='label-delete'),
-
- url(r'^tree/$', views.TreeView.as_view(), name='tree-view'),
]
diff --git a/apps/assets/views/__cluster.py b/apps/assets/views/__cluster.py
deleted file mode 100644
index 5df58953c..000000000
--- a/apps/assets/views/__cluster.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# coding:utf-8
-from django.utils.translation import ugettext as _
-from django.views.generic import TemplateView, ListView, View
-from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateView
-from django.urls import reverse_lazy
-from django.views.generic.detail import DetailView, SingleObjectMixin
-from django.contrib.messages.views import SuccessMessageMixin
-
-from common.const import create_success_msg, update_success_msg
-from .. import forms
-from ..models import Asset, AssetGroup, AdminUser, Cluster, SystemUser
-from ..hands import AdminUserRequiredMixin
-
-
-__all__ = [
- 'ClusterListView', 'ClusterCreateView', 'ClusterUpdateView',
- 'ClusterDetailView', 'ClusterDeleteView', 'ClusterAssetsView',
-]
-
-
-class ClusterListView(AdminUserRequiredMixin, TemplateView):
- template_name = 'assets/cluster_list.html'
-
- def get_context_data(self, **kwargs):
- context = {
- 'app': _('Assets'),
- 'action': _('Cluster list'),
- }
- kwargs.update(context)
- return super().get_context_data(**kwargs)
-
-
-class ClusterCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
- model = Cluster
- form_class = forms.ClusterForm
- template_name = 'assets/cluster_create_update.html'
- success_url = reverse_lazy('assets:cluster-list')
- success_message = create_success_msg
-
- def get_context_data(self, **kwargs):
- context = {
- 'app': _('assets'),
- 'action': _('Create cluster'),
- }
- kwargs.update(context)
- return super().get_context_data(**kwargs)
-
- def form_valid(self, form):
- cluster = form.save()
- cluster.created_by = self.request.user.username
- cluster.save()
- return super().form_valid(form)
-
-
-class ClusterUpdateView(AdminUserRequiredMixin, SuccessMessageMixin, UpdateView):
- model = Cluster
- form_class = forms.ClusterForm
- template_name = 'assets/cluster_create_update.html'
- context_object_name = 'cluster'
- success_url = reverse_lazy('assets:cluster-list')
- success_message = update_success_msg
-
- def get_context_data(self, **kwargs):
- context = {
- 'app': _('assets'),
- 'action': _('Update Cluster'),
- }
- kwargs.update(context)
- return super().get_context_data(**kwargs)
-
-
-class ClusterDetailView(AdminUserRequiredMixin, DetailView):
- model = Cluster
- template_name = 'assets/cluster_detail.html'
- context_object_name = 'cluster'
-
- def get_context_data(self, **kwargs):
- admin_user_list = AdminUser.objects.exclude()
- context = {
- 'app': _('Assets'),
- 'action': _('Cluster detail'),
- 'admin_user_list': admin_user_list,
- }
- kwargs.update(context)
- return super().get_context_data(**kwargs)
-
-
-class ClusterAssetsView(AdminUserRequiredMixin, DetailView):
- model = Cluster
- template_name = 'assets/cluster_assets.html'
- context_object_name = 'cluster'
-
- def get_context_data(self, **kwargs):
- assets_remain = Asset.objects.exclude(id__in=self.object.assets.all())
-
- context = {
- 'app': _('Assets'),
- 'action': _('Asset detail'),
- 'groups': AssetGroup.objects.all(),
- 'system_users': SystemUser.objects.all(),
- 'assets_remain': assets_remain,
- 'assets': [asset for asset in Asset.objects.all() if asset not in assets_remain],
- }
- kwargs.update(context)
- return super().get_context_data(**kwargs)
-
-
-class ClusterDeleteView(AdminUserRequiredMixin, DeleteView):
- model = Cluster
- template_name = 'delete_confirm.html'
- success_url = reverse_lazy('assets:cluster-list')
diff --git a/apps/assets/views/__group.py b/apps/assets/views/__group.py
deleted file mode 100644
index 0ae65eaa0..000000000
--- a/apps/assets/views/__group.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# coding:utf-8
-from __future__ import absolute_import, unicode_literals
-
-from django.utils.translation import ugettext as _
-from django.views.generic import TemplateView, ListView, View
-from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateView
-from django.urls import reverse_lazy
-from django.views.generic.detail import DetailView, SingleObjectMixin
-from django.shortcuts import get_object_or_404, reverse, redirect
-from django.contrib.messages.views import SuccessMessageMixin
-
-from common.const import create_success_msg, update_success_msg
-from .. import forms
-from ..models import Asset, AssetGroup, AdminUser, Cluster, SystemUser
-from ..hands import AdminUserRequiredMixin
-
-
-__all__ = [
- 'AssetGroupCreateView', 'AssetGroupDetailView',
- 'AssetGroupUpdateView', 'AssetGroupListView',
- 'AssetGroupDeleteView',
-]
-
-
-class AssetGroupCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
- model = AssetGroup
- form_class = forms.AssetGroupForm
- template_name = 'assets/asset_group_create.html'
- success_url = reverse_lazy('assets:asset-group-list')
- success_message = create_success_msg
-
- def get_context_data(self, **kwargs):
- context = {
- 'app': _('Assets'),
- 'action': _('Create asset group'),
- }
- kwargs.update(context)
- return super().get_context_data(**kwargs)
-
- def form_valid(self, form):
- group = form.save()
- group.created_by = self.request.user.username
- group.save()
- return super().form_valid(form)
-
-
-class AssetGroupListView(AdminUserRequiredMixin, TemplateView):
- template_name = 'assets/asset_group_list.html'
-
- def get_context_data(self, **kwargs):
- context = {
- 'app': _('Assets'),
- 'action': _('Asset group list'),
- 'assets': Asset.objects.all(),
- 'system_users': SystemUser.objects.all(),
- }
- kwargs.update(context)
- return super(AssetGroupListView, self).get_context_data(**kwargs)
-
-
-class AssetGroupDetailView(AdminUserRequiredMixin, DetailView):
- model = AssetGroup
- template_name = 'assets/asset_group_detail.html'
- context_object_name = 'asset_group'
-
- def get_context_data(self, **kwargs):
- assets_remain = Asset.objects.exclude(groups__in=[self.object])
- context = {
- 'app': _('Assets'),
- 'action': _('Asset group detail'),
- 'assets_remain': assets_remain,
- 'assets': self.object.assets.all(),
- }
- kwargs.update(context)
- return super().get_context_data(**kwargs)
-
-
-class AssetGroupUpdateView(AdminUserRequiredMixin, SuccessMessageMixin, UpdateView):
- model = AssetGroup
- form_class = forms.AssetGroupForm
- template_name = 'assets/asset_group_create.html'
- success_url = reverse_lazy('assets:asset-group-list')
- success_message = update_success_msg
-
- def get_context_data(self, **kwargs):
- context = {
- 'app': _('Assets'),
- 'action': _('Create asset group'),
- }
- kwargs.update(context)
- return super().get_context_data(**kwargs)
-
-
-class AssetGroupDeleteView(AdminUserRequiredMixin, DeleteView):
- template_name = 'delete_confirm.html'
- model = AssetGroup
- success_url = reverse_lazy('assets:asset-group-list')
diff --git a/apps/assets/views/__init__.py b/apps/assets/views/__init__.py
index 488d04262..097dec3ae 100644
--- a/apps/assets/views/__init__.py
+++ b/apps/assets/views/__init__.py
@@ -1,8 +1,5 @@
# coding:utf-8
from .asset import *
-# from .group import *
-# from .cluster import *
from .system_user import *
from .admin_user import *
from .label import *
-from .node import *
diff --git a/apps/assets/views/admin_user.py b/apps/assets/views/admin_user.py
index ec27a1466..7d7878e88 100644
--- a/apps/assets/views/admin_user.py
+++ b/apps/assets/views/admin_user.py
@@ -10,7 +10,7 @@ from django.views.generic.detail import DetailView, SingleObjectMixin
from common.const import create_success_msg, update_success_msg
from .. import forms
-from ..models import AdminUser, Cluster
+from ..models import AdminUser, Node
from ..hands import AdminUserRequiredMixin
__all__ = [
@@ -77,6 +77,7 @@ class AdminUserDetailView(AdminUserRequiredMixin, DetailView):
context = {
'app': _('Assets'),
'action': _('Admin user detail'),
+ 'nodes': Node.objects.all()
}
kwargs.update(context)
return super().get_context_data(**kwargs)
diff --git a/apps/assets/views/asset.py b/apps/assets/views/asset.py
index b14282f74..62148d6b2 100644
--- a/apps/assets/views/asset.py
+++ b/apps/assets/views/asset.py
@@ -34,8 +34,7 @@ from ..hands import AdminUserRequiredMixin
__all__ = [
'AssetListView', 'AssetCreateView', 'AssetUpdateView',
'UserAssetListView', 'AssetBulkUpdateView', 'AssetDetailView',
- 'AssetModalListView', 'AssetDeleteView', 'AssetExportView',
- 'BulkImportAssetView',
+ 'AssetDeleteView', 'AssetExportView', 'BulkImportAssetView',
]
logger = get_logger(__file__)
@@ -102,22 +101,22 @@ class AssetCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
return create_success_msg % ({"name": cleaned_data["hostname"]})
-class AssetModalListView(AdminUserRequiredMixin, ListView):
- paginate_by = settings.DISPLAY_PER_PAGE
- model = Asset
- context_object_name = 'asset_modal_list'
- template_name = 'assets/asset_modal_list.html'
-
- def get_context_data(self, **kwargs):
- assets = Asset.objects.all()
- assets_id = self.request.GET.get('assets_id', '')
- assets_id_list = [i for i in assets_id.split(',') if i.isdigit()]
- context = {
- 'all_assets': assets_id_list,
- 'assets': assets
- }
- kwargs.update(context)
- return super().get_context_data(**kwargs)
+# class AssetModalListView(AdminUserRequiredMixin, ListView):
+# paginate_by = settings.DISPLAY_PER_PAGE
+# model = Asset
+# context_object_name = 'asset_modal_list'
+# template_name = 'assets/_asset_list_modal.html'
+#
+# def get_context_data(self, **kwargs):
+# assets = Asset.objects.all()
+# assets_id = self.request.GET.get('assets_id', '')
+# assets_id_list = [i for i in assets_id.split(',') if i.isdigit()]
+# context = {
+# 'all_assets': assets_id_list,
+# 'assets': assets
+# }
+# kwargs.update(context)
+# return super().get_context_data(**kwargs)
class AssetBulkUpdateView(AdminUserRequiredMixin, ListView):
@@ -191,14 +190,11 @@ class AssetDetailView(DetailView):
template_name = 'assets/asset_detail.html'
def get_context_data(self, **kwargs):
- asset_groups = self.object.groups.all()
+ nodes_remain = Node.objects.exclude(assets=self.object)
context = {
'app': _('Assets'),
'action': _('Asset detail'),
- 'asset_groups_remain': [asset_group for asset_group in AssetGroup.objects.all()
- if asset_group not in asset_groups],
- 'asset_groups': asset_groups,
- 'system_users_all': SystemUser.objects.all(),
+ 'nodes_remain': nodes_remain,
}
kwargs.update(context)
return super().get_context_data(**kwargs)
diff --git a/apps/assets/views/node.py b/apps/assets/views/node.py
deleted file mode 100644
index 8c8a463c7..000000000
--- a/apps/assets/views/node.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-
-from django.views.generic import TemplateView
-from django.utils.translation import ugettext_lazy as _
-
-from common.mixins import AdminUserRequiredMixin
-from ..models import Label
-
-
-__all__ = ['TreeView']
-
-
-class TreeView(AdminUserRequiredMixin, TemplateView):
- template_name = 'assets/tree.html'
-
- def get_context_data(self, **kwargs):
- context = {
- 'app': _('Assets'),
- 'action': _('Tree view'),
- 'labels': Label.objects.all(),
- }
- kwargs.update(context)
- return super().get_context_data(**kwargs)
-
diff --git a/apps/assets/views/system_user.py b/apps/assets/views/system_user.py
index 3b79d0391..2e4eacf56 100644
--- a/apps/assets/views/system_user.py
+++ b/apps/assets/views/system_user.py
@@ -9,7 +9,7 @@ from django.views.generic.detail import DetailView
from common.const import create_success_msg, update_success_msg
from ..forms import SystemUserForm
-from ..models import SystemUser, Cluster
+from ..models import SystemUser, Node
from ..hands import AdminUserRequiredMixin
@@ -73,6 +73,7 @@ class SystemUserDetailView(AdminUserRequiredMixin, DetailView):
context = {
'app': _('Assets'),
'action': _('System user detail'),
+ 'nodes_remain': Node.objects.exclude(systemuser=self.object)
}
kwargs.update(context)
return super().get_context_data(**kwargs)
diff --git a/apps/perms/templates/perms/asset_permission_asset.html b/apps/perms/templates/perms/asset_permission_asset.html
index 5cfc44c05..12369574d 100644
--- a/apps/perms/templates/perms/asset_permission_asset.html
+++ b/apps/perms/templates/perms/asset_permission_asset.html
@@ -191,7 +191,7 @@ function updateGroup(groups) {
}
jumpserver.assets_selected = {};
-jumpserver.groups_selected = {};
+jumpserver.nodes_selected = {};
$(document).ready(function () {
$('.select2.asset').select2()
@@ -206,11 +206,11 @@ $(document).ready(function () {
$('.select2.group').select2()
.on('select2:select', function(evt) {
var data = evt.params.data;
- jumpserver.groups_selected[data.id] = data.text;
+ jumpserver.nodes_selected[data.id] = data.text;
})
.on('select2:unselect', function(evt) {
var data = evt.params.data;
- delete jumpserver.groups_selected[data.id]
+ delete jumpserver.nodes_selected[data.id]
})
})
.on('click', '.btn-add-assets', function () {
@@ -232,7 +232,7 @@ $(document).ready(function () {
removeAssets(assets)
})
.on('click', '#btn-add-group', function () {
- if (Object.keys(jumpserver.groups_selected).length === 0) {
+ if (Object.keys(jumpserver.nodes_selected).length === 0) {
return false;
}
@@ -240,7 +240,7 @@ $(document).ready(function () {
return $(this).data('gid');
}).get();
- $.map(jumpserver.groups_selected, function(group_name, index) {
+ $.map(jumpserver.nodes_selected, function(group_name, index) {
groups.push(index);
$('#opt_' + index).remove();
$('.group_edit tbody').append(
diff --git a/apps/perms/templates/perms/asset_permission_list.html b/apps/perms/templates/perms/asset_permission_list.html
index 9f8e26a43..279b0eaaf 100644
--- a/apps/perms/templates/perms/asset_permission_list.html
+++ b/apps/perms/templates/perms/asset_permission_list.html
@@ -85,7 +85,7 @@ function initTable() {
ele: $('#permission_list_table'),
columnDefs: [
{targets: 1, createdCell: function (td, cellData) {
- var html = '' + cellData.name + '';
+ var html = '' + cellData.name + '';
$(td).html(html.replace("99899", cellData.pk));
}},
{targets: 2, createdCell: function (td, cellData) {
@@ -178,9 +178,9 @@ function initTree() {
$.get("{% url 'api-assets:node-list' %}", function(data, status){
$.each(data, function (index, value) {
value["pId"] = value["parent"];
- if (value["key"] === "0") {
- value["open"] = true;
- }
+ {#if (value["key"] === "0") {#}
+ value["open"] = true;
+ {# }#}
value["name"] = value["value"]
});
zNodes = data;
diff --git a/apps/perms/templates/perms/asset_permission_user.html b/apps/perms/templates/perms/asset_permission_user.html
index 2e64368aa..bee5b0e35 100644
--- a/apps/perms/templates/perms/asset_permission_user.html
+++ b/apps/perms/templates/perms/asset_permission_user.html
@@ -150,7 +150,7 @@
{% block custom_foot_js %}
|