mirror of https://github.com/jumpserver/jumpserver
[Bugfix] 修复一些bug
parent
67e953902b
commit
cd1d690fd3
|
@ -10,7 +10,7 @@
|
||||||
<a href="{% url 'assets:asset-export' %}" style="display: block">{% trans 'Download' %}</a>
|
<a href="{% url 'assets:asset-export' %}" style="display: block">{% trans 'Download' %}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label" for="id_users">{% trans "Asset excel file" %}</label>
|
<label class="control-label" for="id_users">{% trans "Asset csv file" %}</label>
|
||||||
<input id="id_assets" type="file" name="file" />
|
<input id="id_assets" type="file" name="file" />
|
||||||
<span class="help-block">
|
<span class="help-block">
|
||||||
{% trans 'If set id, will use this id update asset existed' %}
|
{% trans 'If set id, will use this id update asset existed' %}
|
||||||
|
|
|
@ -243,7 +243,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="panel panel-warning">
|
<div class="panel panel-warning">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-info-circle"></i> {% trans 'System users' %}
|
<i class="fa fa-info-circle"></i> {% trans 'Push system users' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<table class="table group_edit" id="add-asset2systemuser">
|
<table class="table group_edit" id="add-asset2systemuser">
|
||||||
|
@ -252,7 +252,7 @@
|
||||||
<tr class="no-borders-tr">
|
<tr class="no-borders-tr">
|
||||||
<td colspan="2">
|
<td colspan="2">
|
||||||
<select data-placeholder="{% trans 'Select system users' %}" class="select2" style="width: 100%" multiple="" tabindex="4">
|
<select data-placeholder="{% trans 'Select system users' %}" class="select2" style="width: 100%" multiple="" tabindex="4">
|
||||||
{% for system_user in system_users_remain %}
|
{% for system_user in system_users_all %}
|
||||||
<option value="{{ system_user.id }}" id="opt_{{ system_user.id }}">{{ system_user.name }}</option>
|
<option value="{{ system_user.id }}" id="opt_{{ system_user.id }}">{{ system_user.name }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
|
|
|
@ -45,9 +45,9 @@
|
||||||
<th>{% trans 'Hostname' %}</th>
|
<th>{% trans 'Hostname' %}</th>
|
||||||
<th>{% trans 'IP' %}</th>
|
<th>{% trans 'IP' %}</th>
|
||||||
<th>{% trans 'Port' %}</th>
|
<th>{% trans 'Port' %}</th>
|
||||||
<th>{% trans 'Type' %}</th>
|
<th>{% trans 'Type' %}</th>
|
||||||
<th>{% trans 'Alive' %}</th>
|
<th>{% trans 'Alive' %}</th>
|
||||||
<th>{% trans 'Action' %}</th>
|
<th>{% trans 'Action' %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -56,40 +56,11 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-5" style="padding-left: 0;padding-right: 0">
|
<div class="col-sm-5" style="padding-left: 0;padding-right: 0">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-info-circle"></i> {% trans 'Add asset to this group' %}
|
<i class="fa fa-info-circle"></i> {% trans 'Push system users' %}
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<table class="table">
|
|
||||||
<tbody>
|
|
||||||
<form>
|
|
||||||
<tr class="no-borders-tr">
|
|
||||||
<td colspan="2">
|
|
||||||
<select data-placeholder="{% trans 'Select assets' %}" class="select2 asset-select" style="width: 100%" multiple="" tabindex="4">
|
|
||||||
{% for asset in assets_remain %}
|
|
||||||
<option value="{{ asset.id }}" id="opt_{{ asset.id }}">{{ asset.hostname }}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="no-borders-tr">
|
|
||||||
<td colspan="2">
|
|
||||||
<button type="button" class="btn btn-primary btn-sm btn-asset-add-groups">{% trans 'Add' %}</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</form>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-sm-5" style="padding-left: 0;padding-right: 0">
|
|
||||||
<div class="panel panel-warning">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<i class="fa fa-info-circle"></i> {% trans 'Push system user to this group assets' %}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<table class="table">
|
<table class="table">
|
||||||
|
@ -106,7 +77,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="no-borders-tr">
|
<tr class="no-borders-tr">
|
||||||
<td colspan="2">
|
<td colspan="2">
|
||||||
<button type="button" class="btn btn-warning btn-sm btn-push-system-user">{% trans 'Push' %}</button>
|
<button type="button" class="btn btn-primary btn-sm btn-push-system-user">{% trans 'Push' %}</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</form>
|
</form>
|
||||||
|
@ -125,45 +96,28 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block custom_foot_js %}
|
{% block custom_foot_js %}
|
||||||
<script>
|
<script>
|
||||||
function updateAssetsGroup(assets) {
|
jumpserver.assets_selected = {};
|
||||||
var the_url = "{% url 'api-assets:asset-groups-update' pk=asset_group.id %}";
|
function updateGroupAssets(assets) {
|
||||||
|
var the_url = "{}";
|
||||||
var body = {
|
var body = {
|
||||||
assets: Object.assign([], assets)
|
assets: Object.assign([], assets)
|
||||||
};
|
};
|
||||||
|
var $data_table = $("#asset_list_table").DataTable();
|
||||||
var success = function(data) {
|
var success = function(data) {
|
||||||
$('select2-selection__rendered').empty();
|
$('.select2-selection__rendered').empty();
|
||||||
$('#groups_selected').val('');
|
$.map(jumpserver.assets_selected, function(asset_ip, index) {
|
||||||
$('#asset_list_table > tbody').empty();
|
$('#opt_' + index).remove();
|
||||||
$.map(jumpserver.assets_selected, function(asset_ip, index) {
|
$data_table.ajax.reload();
|
||||||
var url = '{% url "api-assets:asset-detail" pk=99991937 %}'.replace(99991937, index);
|
});
|
||||||
asset = $.ajax({
|
jumpserver.groups_selected = {};
|
||||||
url: url,
|
|
||||||
method: "GET",
|
|
||||||
dataType: "json",
|
|
||||||
success: function (data, textStatus) {
|
|
||||||
var add_tr = '<tr id="bdg_asset" data-aid="'+data.id+'">'+
|
|
||||||
'<td>'+data.hostname+'</td>'+
|
|
||||||
'<td>'+data.ip+'</td>'+
|
|
||||||
'<td>'+data.port+'</td>'+
|
|
||||||
'<td>status</td>'+
|
|
||||||
'<td>'+
|
|
||||||
'<a class="btn btn-xs btn-danger m-l-xs btn_asset_delete" data-aid="'+data.id+'">{% trans "Delete" %}</a>'+
|
|
||||||
'<a class="btn btn-xs btn-info m-l-xs btn_asset_update" data-aid="'+data.id+'" href="'+'{% url "assets:asset-update" pk=99991937 %}'.replace(99991937, data.id)+'">{% trans "Update" %}</a>'+
|
|
||||||
'</td>'+
|
|
||||||
'</tr>';
|
|
||||||
(data.is_active == true) ? tr = add_tr.replace('<td>status</td>', '<td><i class="fa fa-circle text-navy"></i></td>'): tr = add_tr.replace('<td>status</td>', '<td><i class="fa fa-circle text-danger"></i></td>');
|
|
||||||
$('#asset_list_table > tbody').append(tr);
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
APIUpdateAttr({
|
APIUpdateAttr({
|
||||||
url: the_url,
|
url: the_url,
|
||||||
body: JSON.stringify(body),
|
body: JSON.stringify(body),
|
||||||
success: success
|
method: 'PUT',
|
||||||
|
success: success
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function leaveGroup(obj, name, url, data) {
|
function leaveGroup(obj, name, url, data) {
|
||||||
function doDelete() {
|
function doDelete() {
|
||||||
|
@ -204,7 +158,9 @@ function pushSystemUser(sysUserID) {
|
||||||
};
|
};
|
||||||
var success = function(data) {
|
var success = function(data) {
|
||||||
var url = "{% url 'ops:task-detail' pk=234234234 %}".replace("234234234", data);
|
var url = "{% url 'ops:task-detail' pk=234234234 %}".replace("234234234", data);
|
||||||
location.href = url
|
setTimeout(function () {
|
||||||
|
location.href = url
|
||||||
|
}, 1000);
|
||||||
};
|
};
|
||||||
APIUpdateAttr({
|
APIUpdateAttr({
|
||||||
url: the_url,
|
url: the_url,
|
||||||
|
@ -236,6 +192,17 @@ Array.prototype.unique = function(){
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
$('.select2').select2();
|
$('.select2').select2();
|
||||||
|
|
||||||
|
$('.select2.asset-select').select2()
|
||||||
|
.on('select2:select', function(evt) {
|
||||||
|
var data = evt.params.data;
|
||||||
|
jumpserver.assets_selected[data.id] = data.text;
|
||||||
|
console.log(jumpserver.assets_selected)
|
||||||
|
})
|
||||||
|
.on('select2:unselect', function(evt) {
|
||||||
|
var data = evt.params.data;
|
||||||
|
delete jumpserver.assets_selected[data.id]
|
||||||
|
});
|
||||||
|
|
||||||
var options = {
|
var options = {
|
||||||
ele: $('#asset_list_table'),
|
ele: $('#asset_list_table'),
|
||||||
buttons: [],
|
buttons: [],
|
||||||
|
@ -266,6 +233,15 @@ $(document).ready(function () {
|
||||||
jumpserver.initDataTable(options);
|
jumpserver.initDataTable(options);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
.on('click', ".btn-asset-group-add-asset", function () {
|
||||||
|
if (Object.keys(jumpserver.assets_selected).length === 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateGroupAssets(jumpserver.assets_selected);
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
.on('click', '.btn-push-system-user', function () {
|
.on('click', '.btn-push-system-user', function () {
|
||||||
var data = $('.system-user-select').select2();
|
var data = $('.system-user-select').select2();
|
||||||
var system_id = data.val()[0];
|
var system_id = data.val()[0];
|
||||||
|
|
|
@ -62,19 +62,18 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div id="actions" class="hide">
|
<div id="actions" class="hide">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<select class="form-control m-b" style="width: auto" id="slct_bulk_update">
|
<select class="form-control m-b" style="width: auto" id="slct_bulk_update">
|
||||||
<option value="delete">{% trans 'Delete selected' %}</option>
|
<option value="delete">{% trans 'Remove selected' %}</option>
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-btn pull-left" style="padding-left: 5px;">
|
<div class="input-group-btn pull-left" style="padding-left: 5px;">
|
||||||
<button id='btn_bulk_update' style="height: 32px;" class="btn btn-sm btn-warning">
|
<button id='btn_bulk_update' style="height: 32px;" class="btn btn-sm btn-warning">
|
||||||
{% trans 'Submit' %}
|
{% trans 'Submit' %}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -254,28 +253,28 @@ $(document).ready(function () {
|
||||||
assets.remove(plain_id_list[j])
|
assets.remove(plain_id_list[j])
|
||||||
}
|
}
|
||||||
function doDelete() {
|
function doDelete() {
|
||||||
swal({
|
swal({
|
||||||
title: "{% trans 'Are you sure?' %}",
|
title: "{% trans 'Are you sure?' %}",
|
||||||
text: "{% trans 'This will delete the selected assets !!!' %}",
|
text: "{% trans 'This will delete the selected assets !!!' %}",
|
||||||
type: "warning",
|
type: "warning",
|
||||||
showCancelButton: true,
|
showCancelButton: true,
|
||||||
confirmButtonColor: "#DD6B55",
|
confirmButtonColor: "#DD6B55",
|
||||||
confirmButtonText: "{% trans 'Confirm' %}",
|
confirmButtonText: "{% trans 'Confirm' %}",
|
||||||
closeOnConfirm: false
|
closeOnConfirm: false
|
||||||
}, function() {
|
}, function() {
|
||||||
var success = function() {
|
var success = function() {
|
||||||
var msg = "{% trans 'Asset Deleted.' %}";
|
var msg = "{% trans 'Asset Deleted.' %}";
|
||||||
swal("{% trans 'Asset Delete' %}", msg, "success");
|
swal("{% trans 'Asset Delete' %}", msg, "success");
|
||||||
$('#idc_assets_table').DataTable().ajax.reload();
|
$('#idc_assets_table').DataTable().ajax.reload();
|
||||||
};
|
};
|
||||||
var fail = function() {
|
var fail = function() {
|
||||||
var msg = "{% trans 'Asset Deleting failed.' %}";
|
var msg = "{% trans 'Asset Deleting failed.' %}";
|
||||||
swal("{% trans 'Asset Delete' %}", msg, "error");
|
swal("{% trans 'Asset Delete' %}", msg, "error");
|
||||||
};
|
};
|
||||||
var url_delete = "{% url 'api-assets:idc-update-assets' pk=idc.id %}";
|
var url_delete = "{% url 'api-assets:idc-update-assets' pk=idc.id %}";
|
||||||
var body = {
|
var body = {
|
||||||
assets: Object.assign([], assets)
|
assets: Object.assign([], assets)
|
||||||
};
|
};
|
||||||
APIUpdateAttr({url: url_delete, body: JSON.stringify(body), method: 'PUT', success: success, error: fail});
|
APIUpdateAttr({url: url_delete, body: JSON.stringify(body), method: 'PUT', success: success, error: fail});
|
||||||
jumpserver.checked = false;
|
jumpserver.checked = false;
|
||||||
});
|
});
|
||||||
|
|
|
@ -189,8 +189,7 @@ class AssetDetailView(DetailView):
|
||||||
'asset_groups_remain': [asset_group for asset_group in AssetGroup.objects.all()
|
'asset_groups_remain': [asset_group for asset_group in AssetGroup.objects.all()
|
||||||
if asset_group not in asset_groups],
|
if asset_group not in asset_groups],
|
||||||
'asset_groups': asset_groups,
|
'asset_groups': asset_groups,
|
||||||
'system_users_remain': [system_user for system_user in SystemUser.objects.all()
|
'system_users_all': SystemUser.objects.all(),
|
||||||
if system_user not in system_users],
|
|
||||||
'system_users': system_users,
|
'system_users': system_users,
|
||||||
}
|
}
|
||||||
kwargs.update(context)
|
kwargs.update(context)
|
||||||
|
@ -315,7 +314,7 @@ class BulkImportAssetView(AdminUserRequiredMixin, JSONResponseMixin, FormView):
|
||||||
failed.append('%s: %s' % (asset_dict['hostname'], str(e)))
|
failed.append('%s: %s' % (asset_dict['hostname'], str(e)))
|
||||||
|
|
||||||
if assets:
|
if assets:
|
||||||
update_assets_hardware_info.delay(assets)
|
update_assets_hardware_info.delay([asset._to_secret_json() for asset in assets])
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
'created': created,
|
'created': created,
|
||||||
|
|
|
@ -67,7 +67,7 @@ class AssetGroupDetailView(AdminUserRequiredMixin, DetailView):
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
assets_remain = Asset.objects.exclude(id__in=self.object.assets.all())
|
assets_remain = Asset.objects.exclude(id__in=self.object.assets.all())
|
||||||
system_users = self.object.system_users.all()
|
system_users = SystemUser.objects.all()
|
||||||
system_users_remain = SystemUser.objects.exclude(id__in=system_users)
|
system_users_remain = SystemUser.objects.exclude(id__in=system_users)
|
||||||
context = {
|
context = {
|
||||||
'app': _('Assets'),
|
'app': _('Assets'),
|
||||||
|
|
|
@ -266,7 +266,7 @@ $(document).ready(function() {
|
||||||
delete jumpserver.groups_selected[data.id]
|
delete jumpserver.groups_selected[data.id]
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.on('click', '#is_active', function() {
|
.on('click', '#is_active', function() {
|
||||||
var the_url = "{% url 'api-users:user-detail' pk=user_object.id %}";
|
var the_url = "{% url 'api-users:user-detail' pk=user_object.id %}";
|
||||||
var checked = $(this).prop('checked');
|
var checked = $(this).prop('checked');
|
||||||
var body = {
|
var body = {
|
||||||
|
|
Loading…
Reference in New Issue