mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-08 10:49:08 +00:00
Dev csv (#2640)
* [Update] 封装JMSCSVRender和JMSCSVParser * [Update] 更改JMSCSVRender,根据请求参数控制导出csv的字段和下载csv模板的字段 * [Update] 导入空数据,提示错误消息 * [Update] 修改用户导入和导出功能代码 * [Update] 修改导入路由为动态反向解析 * [Update] 修改JMSCSVRender和JMSCSVParser以及用户导入导出代码 * [Update] 优化parsers逻辑 * [Update] 优化parsers csv代码结构 * [Update] 优化renders csv代码逻辑 * [Update] 删除parsers csv多余代码 * [Update] 删除parsers csv多余变量 * [Update] 优化renders csv代码结构 * [Update] 优化renders csv代码结构2 * [Update] 优化renders csv获取header逻辑 * [Update] 优化Cache Resources ID View逻辑 * [Update] 优化ViewSet IDCacheFilterMixin逻辑 * [Update] csv: parser render 添加异常捕获逻辑 * [Update] 删除多余代码 * [Update] 优化前端代码 * [Update] 修改小问题 * [Update] 修改前端导出用户的问题 * [Update] 前端 - 优化数据导出逻辑 APIExportData * [Update] 修复批量创建用户时发送created信号的bug * [Update] 优化导入时错误信息展示 * [Update] 优化parser、render时,对于多对多字段的处理 * [Update] 修改前端上传空文件问题 * [Update] 添加IDExportFilter,控制下载模版时的queryset * [Update] 修改判断导出模版时参数变量名 action => template * [Update] 修复导入用户数据时,用户组不生效的bug * [Update] 修改前端导入信息展示 * [Update] 抽象资源导入模版 * [Update] 优化资源导入模版 * [Update] 修改js设置url的params逻辑 * [Update] 修改users序列类控制read_only字段方式 * [Update] 资产列表采用新的导入/导出csv文件逻辑 * [Update] 修改导入资产时设置资产所在节点逻辑 * [Update] 添加用户组导入/导出功能 * [Update] 修改前端变量名 * [Update] 修改下载导入模版,不包含org字段 * [Update] 增加管理用户导入/导出功能 * [Update] 导入模版提供id字段(为了资源备份后导入直接使用); 修复资源导入时联合唯一字段不校验导致创建时报错的bug * [Update] 增加系统用户导入/导出功能 * [Update] 排序资源导入/导出字段 * [Update] 翻译导入/导出的字段和模版 * [Update] 更改csv导出和导出模版数据的控制在render实现 * [Update] 资产添加 更新导入 功能 * [Update] 用户/用户组/管理用户/系统用户/ 添加导入更新 * [Update] 翻译 * [Update] 优化资源序列化中的label * [Update] 去掉资源IDInFilterMixin过滤 * [Update] 翻译
This commit is contained in:
@@ -954,9 +954,92 @@ function rootNodeAddDom(ztree, callback) {
|
||||
})
|
||||
}
|
||||
|
||||
function APIExportData(props) {
|
||||
props = props || {};
|
||||
$.ajax({
|
||||
url: '/api/common/v1/resources/cache/',
|
||||
type: props.method || "POST",
|
||||
data: props.body,
|
||||
contentType: props.content_type || "application/json; charset=utf-8",
|
||||
dataType: props.data_type || "json",
|
||||
success: function (data) {
|
||||
var export_url = props.success_url;
|
||||
var params = props.params || {};
|
||||
params['format'] = props.format;
|
||||
params['spm'] = data.spm;
|
||||
for (var k in params){
|
||||
export_url = setUrlParam(export_url, k, params[k])
|
||||
}
|
||||
window.open(export_url);
|
||||
},
|
||||
error: function () {
|
||||
toastr.error('Export failed');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function APIImportData(props){
|
||||
props = props || {};
|
||||
$.ajax({
|
||||
url: props.url,
|
||||
type: props.method || "POST",
|
||||
processData: false,
|
||||
data: props.body,
|
||||
contentType: props.content_type || 'text/csv',
|
||||
success: function (data) {
|
||||
if(props.method === 'POST'){
|
||||
$('#created_failed').html('');
|
||||
$('#created_failed_detail').html('');
|
||||
$('#success_created').html("Import Success");
|
||||
$('#success_created_detail').html("Count" + ": " + data.length);
|
||||
}else{
|
||||
$('#updated_failed').html('');
|
||||
$('#updated_failed_detail').html('');
|
||||
$('#success_updated').html("Update Success");
|
||||
$('#success_updated_detail').html("Count" + ": " + data.length);
|
||||
}
|
||||
|
||||
props.data_table.ajax.reload()
|
||||
},
|
||||
error: function (error) {
|
||||
var data = error.responseJSON;
|
||||
if (data instanceof Array){
|
||||
var html = '';
|
||||
var li = '';
|
||||
var err = '';
|
||||
$.each(data, function (index, item){
|
||||
err = '';
|
||||
for (var prop in item) {
|
||||
err += prop + ": " + item[prop][0] + " "
|
||||
}
|
||||
if (err) {
|
||||
li = "<li>" + "Line " + (++index) + ". " + err + "</li>";
|
||||
html += li
|
||||
}
|
||||
});
|
||||
html = "<ul>" + html + "</ul>"
|
||||
}
|
||||
else {
|
||||
html = error.responseText
|
||||
}
|
||||
if(props.method === 'POST'){
|
||||
$('#success_created').html('');
|
||||
$('#success_created_detail').html('');
|
||||
$('#created_failed').html("Import failed");
|
||||
$('#created_failed_detail').html(html);
|
||||
}else{
|
||||
$('#success_updated').html('');
|
||||
$('#success_updated_detail').html('');
|
||||
$('#updated_failed').html("Update failed");
|
||||
$('#updated_failed_detail').html(html);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
function htmlEscape ( d ) {
|
||||
return typeof d === 'string' ?
|
||||
d.replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"') :
|
||||
d;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user