-
+
+ {% trans 'Loading' %} ...
@@ -55,12 +56,78 @@
{% endblock %}
diff --git a/apps/assets/templates/assets/asset_list.html b/apps/assets/templates/assets/asset_list.html
index 58e0d86e5..fcd0f79ff 100644
--- a/apps/assets/templates/assets/asset_list.html
+++ b/apps/assets/templates/assets/asset_list.html
@@ -226,6 +226,33 @@ function onNodeSelected(event, treeNode) {
asset_table.ajax.reload();
}
+function onAssetModalConfirmAddAssetToNode(table) {
+ var assets_selected = table.selected;
+ if (!current_node_id) {
+ return
+ }
+
+ var data = {'assets': assets_selected};
+ var success = function () {
+ table.selected = [];
+ table.ajax.reload()
+ };
+
+ var url = '';
+ if (update_node_action === "move") {
+ url = "{% url 'api-assets:node-replace-assets' pk=DEFAULT_PK %}".replace("{{ DEFAULT_PK }}", current_node_id);
+ } else {
+ url = "{% url 'api-assets:node-add-assets' pk=DEFAULT_PK %}".replace("{{ DEFAULT_PK }}", current_node_id);
+ }
+
+ requestApi({
+ 'url': url,
+ 'method': 'PUT',
+ 'body': JSON.stringify(data),
+ 'success': success
+ })
+}
+
$(document).ready(function(){
initTable();
initTree();
@@ -236,6 +263,12 @@ $(document).ready(function(){
else{
$('#show_current_asset').css('display', 'inline-block');
}
+
+ var modalOption = {
+ onModalConfirm: onAssetModalConfirmAddAssetToNode,
+ onModalTableDone: null
+ };
+ setAssetModalOptions(modalOption);
})
.on('click', '.labels li', function () {
var val = $(this).text();
@@ -429,7 +462,6 @@ $(document).ready(function(){
}
function doRemove() {
- var nodes = zTree.getSelectedNodes();
if (!current_node_id) {
return
}
@@ -472,32 +504,7 @@ $(document).ready(function(){
}
$(".ipt_check_all").prop("checked", false)
})
-.on('click', '#btn_asset_modal_confirm', function () {
- var assets_selected = asset_table2.selected;
- if (!current_node_id) {
- return
- }
-
- var data = {'assets': assets_selected};
- var success = function () {
- asset_table2.selected = [];
- asset_table2.ajax.reload()
- };
-
- var url = '';
- if (update_node_action === "move") {
- url = "{% url 'api-assets:node-replace-assets' pk=DEFAULT_PK %}".replace("{{ DEFAULT_PK }}", current_node_id);
- } else {
- url = "{% url 'api-assets:node-add-assets' pk=DEFAULT_PK %}".replace("{{ DEFAULT_PK }}", current_node_id);
- }
-
- requestApi({
- 'url': url,
- 'method': 'PUT',
- 'body': JSON.stringify(data),
- 'success': success
- })
-}).on('hidden.bs.modal', '#asset_list_modal', function () {
+.on('hidden.bs.modal', '#asset_list_modal', function () {
window.location.reload();
}).on('click', '#menu_asset_add', function () {
update_node_action = "add"
diff --git a/apps/assets/templates/assets/domain_create_update.html b/apps/assets/templates/assets/domain_create_update.html
index 399b38011..96bfd02aa 100644
--- a/apps/assets/templates/assets/domain_create_update.html
+++ b/apps/assets/templates/assets/domain_create_update.html
@@ -28,25 +28,6 @@ $(document).ready(function () {
}).on('click', '.select2-selection__rendered', function (e) {
e.preventDefault();
$("#asset_list_modal").modal();
- initSelectedAssets2Table();
-})
-.on('click', '#btn_asset_modal_confirm', function () {
- var assets = asset_table2.selected;
- var options = [];
- $('#id_assets option').each(function (i, v) {
- options.push(v.value)
- });
- asset_table2.selected_rows.forEach(function (i) {
- var name = i.hostname + '(' + i.ip + ')';
- var option = new Option(name, i.id, false, true);
-
- if (options.indexOf(i.id) === -1) {
- $('#id_assets').append(option).trigger('change');
- }
- });
- $('.select2').val(assets).trigger('change');
- $("#asset_list_modal").modal('hide');
-
})
.on("submit", "form", function (evt) {
evt.preventDefault();
diff --git a/apps/assets/templates/assets/label_create_update.html b/apps/assets/templates/assets/label_create_update.html
index a6b9582a5..41646003c 100644
--- a/apps/assets/templates/assets/label_create_update.html
+++ b/apps/assets/templates/assets/label_create_update.html
@@ -32,24 +32,6 @@ $(document).ready(function () {
}).on('click', '.select2-selection__rendered', function (e) {
e.preventDefault();
$("#asset_list_modal").modal();
- initSelectedAssets2Table();
-})
-.on('click', '#btn_asset_modal_confirm', function () {
- var assets = asset_table2.selected;
- var options = [];
- $('#id_assets option').each(function (i, v) {
- options.push(v.value)
- });
- asset_table2.selected_rows.forEach(function (i) {
- var name = i.hostname + '(' + i.ip + ')';
- var option = new Option(name, i.id, false, true);
-
- if (options.indexOf(i.id) === -1) {
- $('#id_assets').append(option).trigger('change');
- }
- });
- $('#id_assets').val(assets).trigger('change');
- $("#asset_list_modal").modal('hide');
})
.on("submit", "form", function (evt) {
evt.preventDefault();
diff --git a/apps/common/signals_handlers.py b/apps/common/signals_handlers.py
index 91901676d..e7dd728c3 100644
--- a/apps/common/signals_handlers.py
+++ b/apps/common/signals_handlers.py
@@ -14,7 +14,7 @@ from .local import thread_local
pattern = re.compile(r'FROM `(\w+)`')
logger = get_logger(__name__)
-DEBUG_DB_QUERY = os.environ.get('DEBUG_DB_QUERY', '0') == '1'
+DEBUG_DB = os.environ.get('DEBUG_DB', '0') == '1'
class Counter:
@@ -58,7 +58,7 @@ def on_request_finished_release_local(sender, **kwargs):
thread_local.__release_local__()
-if settings.DEBUG and DEBUG_DB_QUERY:
+if settings.DEBUG and DEBUG_DB:
request_finished.connect(on_request_finished_logging_db_query)
diff --git a/apps/jumpserver/settings.py b/apps/jumpserver/settings.py
index 27df6314f..ed6e665b5 100644
--- a/apps/jumpserver/settings.py
+++ b/apps/jumpserver/settings.py
@@ -607,8 +607,10 @@ SWAGGER_SETTINGS = {
'in': 'header'
}
},
+ 'DEFAULT_API_URL': 'http://www.fit2cloud.com'
}
+
# Default email suffix
EMAIL_SUFFIX = CONFIG.EMAIL_SUFFIX
LOGIN_LOG_KEEP_DAYS = CONFIG.LOGIN_LOG_KEEP_DAYS
diff --git a/apps/ops/templates/ops/command_execution_list.html b/apps/ops/templates/ops/command_execution_list.html
index 3c9f1b54e..81e9635c6 100644
--- a/apps/ops/templates/ops/command_execution_list.html
+++ b/apps/ops/templates/ops/command_execution_list.html
@@ -110,10 +110,16 @@ $(document).ready(function() {
data_list.pop();
}
var html = createPopover(data_list);
- console.log(html);
$(this).html(html);
});
- $('[data-toggle=popover]').popover({html : true});
+ $('[data-toggle="popover"]').popover({
+ html: true,
+ placement: 'bottom',
+ trigger: 'click',
+ container: 'body'
+ }).on('click', function (e) {
+ $('[data-toggle="popover"]').not(this).popover('hide');
+ });
})
{% endblock %}
diff --git a/apps/perms/api/asset_permission.py b/apps/perms/api/asset_permission.py
index 810ae5ac9..3e7f4a078 100644
--- a/apps/perms/api/asset_permission.py
+++ b/apps/perms/api/asset_permission.py
@@ -97,6 +97,8 @@ class AssetPermissionViewSet(viewsets.ModelViewSet):
inherit_nodes_keys = assets.all().values_list('nodes__key', flat=True)
for key in inherit_nodes_keys:
+ if key is None:
+ continue
ancestor_keys = Node.get_nodes_ancestor_keys_by_key(key, with_self=True)
inherit_all_nodes.update(ancestor_keys)
queryset = queryset.filter(
diff --git a/apps/perms/forms/asset_permission.py b/apps/perms/forms/asset_permission.py
index 1d80258d4..6fdaee30b 100644
--- a/apps/perms/forms/asset_permission.py
+++ b/apps/perms/forms/asset_permission.py
@@ -53,6 +53,16 @@ class AssetPermissionForm(OrgModelForm):
assets_field.queryset = Asset.objects.none()
nodes_field.queryset = Node.objects.none()
+ def set_nodes_initial(self, nodes):
+ field = self.fields['nodes']
+ field.choices = [(n.id, n.full_value) for n in nodes]
+ field.initial = nodes
+
+ def set_assets_initial(self, assets):
+ field = self.fields['assets']
+ field.choices = [(a.id, a.hostname) for a in assets]
+ field.initial = assets
+
class Meta:
model = AssetPermission
exclude = (
diff --git a/apps/perms/signals_handler.py b/apps/perms/signals_handler.py
index e23bc1f8c..8066ce5ca 100644
--- a/apps/perms/signals_handler.py
+++ b/apps/perms/signals_handler.py
@@ -47,7 +47,7 @@ def on_permission_nodes_changed(sender, instance=None, action='', **kwargs):
if isinstance(instance, AssetPermission):
logger.debug("Asset permission nodes change signal received")
nodes = kwargs['model'].objects.filter(pk__in=kwargs['pk_set'])
- system_users = instance.system_users.all().values_list('id', flat=True)
+ system_users = instance.system_users.all()
for system_user in system_users:
system_user.nodes.add(*tuple(nodes))
@@ -59,7 +59,7 @@ def on_permission_assets_changed(sender, instance=None, action='', **kwargs):
if isinstance(instance, AssetPermission):
logger.debug("Asset permission assets change signal received")
assets = kwargs['model'].objects.filter(pk__in=kwargs['pk_set'])
- system_users = instance.system_users.all().values_list('id', flat=True)
+ system_users = instance.system_users.all()
for system_user in system_users:
system_user.assets.add(*tuple(assets))
diff --git a/apps/perms/templates/perms/asset_permission_asset.html b/apps/perms/templates/perms/asset_permission_asset.html
index ccb1b7f90..093ab39a8 100644
--- a/apps/perms/templates/perms/asset_permission_asset.html
+++ b/apps/perms/templates/perms/asset_permission_asset.html
@@ -100,10 +100,7 @@