mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-08-13 20:06:20 +00:00
* refactor(drf_renderer): 添加 ExcelRenderer 支持导出excel文件格式; 优化CSVRenderer, 抽象 BaseRenderer * perf(renderer): 支持导出资源详情 * refactor(drf_parser): 添加 ExcelParser 支持导入excel文件格式; 优化CSVParser, 抽象 BaseParser * refactor(drf_parser): 添加 ExcelParser 支持导入excel文件格式; 优化CSVParser, 抽象 BaseParser 2 * perf(renderer): 捕获renderer处理异常 * perf: 添加excel依赖包 * perf(drf): 优化导入导出错误日志 * perf: 添加依赖包 pyexcel-io==0.6.4 * perf: 添加依赖包pyexcel-xlsx==0.6.0 * feat: 修改drf/renderer&parser变量命名 * feat: 修改drf/renderer的bug * feat: 修改drf/renderer&parser变量命名 Co-authored-by: Bai <bugatti_it@163.com>
29 lines
684 B
Python
29 lines
684 B
Python
# ~*~ coding: utf-8 ~*~
|
|
#
|
|
|
|
import chardet
|
|
import unicodecsv
|
|
|
|
from .base import BaseFileParser
|
|
|
|
|
|
class CSVFileParser(BaseFileParser):
|
|
|
|
media_type = 'text/csv'
|
|
|
|
@staticmethod
|
|
def _universal_newlines(stream):
|
|
"""
|
|
保证在`通用换行模式`下打开文件
|
|
"""
|
|
for line in stream.splitlines():
|
|
yield line
|
|
|
|
def generate_rows(self, stream_data):
|
|
detect_result = chardet.detect(stream_data)
|
|
encoding = detect_result.get("encoding", "utf-8")
|
|
lines = self._universal_newlines(stream_data)
|
|
csv_reader = unicodecsv.reader(lines, encoding=encoding)
|
|
for row in csv_reader:
|
|
yield row
|