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>
|
||||
</div>
|
||||
<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" />
|
||||
<span class="help-block">
|
||||
{% trans 'If set id, will use this id update asset existed' %}
|
||||
|
|
|
@ -243,7 +243,7 @@
|
|||
</div>
|
||||
<div class="panel panel-warning">
|
||||
<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 class="panel-body">
|
||||
<table class="table group_edit" id="add-asset2systemuser">
|
||||
|
@ -252,7 +252,7 @@
|
|||
<tr class="no-borders-tr">
|
||||
<td colspan="2">
|
||||
<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>
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
|
|
@ -45,9 +45,9 @@
|
|||
<th>{% trans 'Hostname' %}</th>
|
||||
<th>{% trans 'IP' %}</th>
|
||||
<th>{% trans 'Port' %}</th>
|
||||
<th>{% trans 'Type' %}</th>
|
||||
<th>{% trans 'Type' %}</th>
|
||||
<th>{% trans 'Alive' %}</th>
|
||||
<th>{% trans 'Action' %}</th>
|
||||
<th>{% trans 'Action' %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -56,40 +56,11 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-5" style="padding-left: 0;padding-right: 0">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-info-circle"></i> {% trans 'Add asset to this group' %}
|
||||
</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' %}
|
||||
<i class="fa fa-info-circle"></i> {% trans 'Push system users' %}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<table class="table">
|
||||
|
@ -106,7 +77,7 @@
|
|||
</tr>
|
||||
<tr class="no-borders-tr">
|
||||
<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>
|
||||
</tr>
|
||||
</form>
|
||||
|
@ -125,45 +96,28 @@
|
|||
{% endblock %}
|
||||
{% block custom_foot_js %}
|
||||
<script>
|
||||
function updateAssetsGroup(assets) {
|
||||
var the_url = "{% url 'api-assets:asset-groups-update' pk=asset_group.id %}";
|
||||
jumpserver.assets_selected = {};
|
||||
function updateGroupAssets(assets) {
|
||||
var the_url = "{}";
|
||||
var body = {
|
||||
assets: Object.assign([], assets)
|
||||
assets: Object.assign([], assets)
|
||||
};
|
||||
var $data_table = $("#asset_list_table").DataTable();
|
||||
var success = function(data) {
|
||||
$('select2-selection__rendered').empty();
|
||||
$('#groups_selected').val('');
|
||||
$('#asset_list_table > tbody').empty();
|
||||
$.map(jumpserver.assets_selected, function(asset_ip, index) {
|
||||
var url = '{% url "api-assets:asset-detail" pk=99991937 %}'.replace(99991937, index);
|
||||
asset = $.ajax({
|
||||
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);
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
$('.select2-selection__rendered').empty();
|
||||
$.map(jumpserver.assets_selected, function(asset_ip, index) {
|
||||
$('#opt_' + index).remove();
|
||||
$data_table.ajax.reload();
|
||||
});
|
||||
jumpserver.groups_selected = {};
|
||||
};
|
||||
APIUpdateAttr({
|
||||
url: the_url,
|
||||
body: JSON.stringify(body),
|
||||
success: success
|
||||
url: the_url,
|
||||
body: JSON.stringify(body),
|
||||
method: 'PUT',
|
||||
success: success
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function leaveGroup(obj, name, url, data) {
|
||||
function doDelete() {
|
||||
|
@ -204,7 +158,9 @@ function pushSystemUser(sysUserID) {
|
|||
};
|
||||
var success = function(data) {
|
||||
var url = "{% url 'ops:task-detail' pk=234234234 %}".replace("234234234", data);
|
||||
location.href = url
|
||||
setTimeout(function () {
|
||||
location.href = url
|
||||
}, 1000);
|
||||
};
|
||||
APIUpdateAttr({
|
||||
url: the_url,
|
||||
|
@ -236,6 +192,17 @@ Array.prototype.unique = function(){
|
|||
$(document).ready(function () {
|
||||
$('.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 = {
|
||||
ele: $('#asset_list_table'),
|
||||
buttons: [],
|
||||
|
@ -266,6 +233,15 @@ $(document).ready(function () {
|
|||
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 () {
|
||||
var data = $('.system-user-select').select2();
|
||||
var system_id = data.val()[0];
|
||||
|
|
|
@ -62,19 +62,18 @@
|
|||
</tbody>
|
||||
</table>
|
||||
|
||||
<div id="actions" class="hide">
|
||||
<div class="input-group">
|
||||
<select class="form-control m-b" style="width: auto" id="slct_bulk_update">
|
||||
<option value="delete">{% trans 'Delete selected' %}</option>
|
||||
</select>
|
||||
<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">
|
||||
{% trans 'Submit' %}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="actions" class="hide">
|
||||
<div class="input-group">
|
||||
<select class="form-control m-b" style="width: auto" id="slct_bulk_update">
|
||||
<option value="delete">{% trans 'Remove selected' %}</option>
|
||||
</select>
|
||||
<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">
|
||||
{% trans 'Submit' %}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -254,28 +253,28 @@ $(document).ready(function () {
|
|||
assets.remove(plain_id_list[j])
|
||||
}
|
||||
function doDelete() {
|
||||
swal({
|
||||
title: "{% trans 'Are you sure?' %}",
|
||||
text: "{% trans 'This will delete the selected assets !!!' %}",
|
||||
type: "warning",
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: "#DD6B55",
|
||||
confirmButtonText: "{% trans 'Confirm' %}",
|
||||
closeOnConfirm: false
|
||||
}, function() {
|
||||
var success = function() {
|
||||
var msg = "{% trans 'Asset Deleted.' %}";
|
||||
swal("{% trans 'Asset Delete' %}", msg, "success");
|
||||
$('#idc_assets_table').DataTable().ajax.reload();
|
||||
};
|
||||
var fail = function() {
|
||||
var msg = "{% trans 'Asset Deleting failed.' %}";
|
||||
swal("{% trans 'Asset Delete' %}", msg, "error");
|
||||
};
|
||||
var url_delete = "{% url 'api-assets:idc-update-assets' pk=idc.id %}";
|
||||
var body = {
|
||||
assets: Object.assign([], assets)
|
||||
};
|
||||
swal({
|
||||
title: "{% trans 'Are you sure?' %}",
|
||||
text: "{% trans 'This will delete the selected assets !!!' %}",
|
||||
type: "warning",
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: "#DD6B55",
|
||||
confirmButtonText: "{% trans 'Confirm' %}",
|
||||
closeOnConfirm: false
|
||||
}, function() {
|
||||
var success = function() {
|
||||
var msg = "{% trans 'Asset Deleted.' %}";
|
||||
swal("{% trans 'Asset Delete' %}", msg, "success");
|
||||
$('#idc_assets_table').DataTable().ajax.reload();
|
||||
};
|
||||
var fail = function() {
|
||||
var msg = "{% trans 'Asset Deleting failed.' %}";
|
||||
swal("{% trans 'Asset Delete' %}", msg, "error");
|
||||
};
|
||||
var url_delete = "{% url 'api-assets:idc-update-assets' pk=idc.id %}";
|
||||
var body = {
|
||||
assets: Object.assign([], assets)
|
||||
};
|
||||
APIUpdateAttr({url: url_delete, body: JSON.stringify(body), method: 'PUT', success: success, error: fail});
|
||||
jumpserver.checked = false;
|
||||
});
|
||||
|
|
|
@ -189,8 +189,7 @@ class AssetDetailView(DetailView):
|
|||
'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_remain': [system_user for system_user in SystemUser.objects.all()
|
||||
if system_user not in system_users],
|
||||
'system_users_all': SystemUser.objects.all(),
|
||||
'system_users': system_users,
|
||||
}
|
||||
kwargs.update(context)
|
||||
|
@ -315,7 +314,7 @@ class BulkImportAssetView(AdminUserRequiredMixin, JSONResponseMixin, FormView):
|
|||
failed.append('%s: %s' % (asset_dict['hostname'], str(e)))
|
||||
|
||||
if assets:
|
||||
update_assets_hardware_info.delay(assets)
|
||||
update_assets_hardware_info.delay([asset._to_secret_json() for asset in assets])
|
||||
|
||||
data = {
|
||||
'created': created,
|
||||
|
|
|
@ -67,7 +67,7 @@ class AssetGroupDetailView(AdminUserRequiredMixin, DetailView):
|
|||
|
||||
def get_context_data(self, **kwargs):
|
||||
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)
|
||||
context = {
|
||||
'app': _('Assets'),
|
||||
|
|
|
@ -266,7 +266,7 @@ $(document).ready(function() {
|
|||
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 checked = $(this).prop('checked');
|
||||
var body = {
|
||||
|
|
Loading…
Reference in New Issue