Conversation
|
导出功能已经过几个月的使用测试,常见的情况都测试可正常使用,Excel 类型由于 Excel 自身限制1048576行,目前超出是做异常处理,后续考虑进行文件拆分。 |
|
谢谢你的新功能,能否考虑将写入文件抽象一下,或使用django 的files 功能 https://docs.djangoproject.com/en/5.0/topics/files/ 以保证后续功能的可扩展性,比如说,有用户可能使用对象存储存放导出数据,当前的代码就比较难适应这个需求。 |
添加导出工单参数,默认为非导出工单
2、sql/templates/sqlquery.html
增加导出工单表单信息,并增加扫描行数检查
3、common/templates/config.html
增加导出工单相关配置表单
4、sql/views.py
传递相关页面所需值
5、sql/templates/sqlworkflow.html
增加工单页面,导出格式的显示
6、sql/templates/detail.html
增加下载按钮,与 offlinedownload.py 交互
7、common/check.py
增加config内oss、sftp及本地存储的检查
8、sql_api/serializers.py
传递相关参数
9、sql/utils/workflow_audit.py
取消导出工单的自动审核,正常情况下导出工单不应自动审核
10、sql/engines/offlinedownload.py
导出工单主要代码
11、sql/engines/goinception.py
增加导出工单类型
12、sql/engines/mysql.py
传递相关参数
13、sql/models.py
(1)syntax_type新增(3,导出工单)
(2)新增字段is_offline_export、export_format、file_name
(3)permissions新增("offline_download", "离线下载权限")
涉及 sql:
alter table sql_workflow
add column export_format varchar(10) DEFAULT NULL,
add column is_offline_export varchar(3) NOT NULL,
add column file_name varchar(255) DEFAULT NULL;
set @content_type_id=(select id from django_content_type where app_label='sql' and model='permission');
insert IGNORE INTO auth_permission (name, content_type_id, codename) VALUES('离线下载权限', @content_type_id, 'offline_download');
14、sql/sql_workflow.py
增加导出格式参数
15、sql/urls.py
增加 offlinedownload 的路由
新增 sql 脚本: src/init_sql/v1.11.1_offlinedownload.sql 与上方 sql 内容一致,无需反复执行
新增依赖:
sqlparse==0.4.4
paramiko==3.4.0
oss2==2.18.3
openpyxl==3.1.2
adbefb6 to
e05c0c5
Compare
|
|
||
| except Exception as e: | ||
| action = "离线下载失败" | ||
| return HttpResponse(f"下载失败:{e}", status=500) |
Check warning
Code scanning / CodeQL
Information exposure through an exception
| elif storage_type == "local": | ||
| local_path = r"{}".format(request.POST.get("local_path")) | ||
| try: | ||
| if not os.path.exists(local_path): |
Check failure
Code scanning / CodeQL
Uncontrolled data used in path expression
| def download_from_local(self): | ||
| file_path = os.path.join(self.local_path, self.file_name) | ||
|
|
||
| with open(file_path, "rb") as file: |
Check failure
Code scanning / CodeQL
Uncontrolled data used in path expression
看了你提供的 files 的文档,可以用到如FileSystemStorage类,但似乎没有直接提供 如上传到 oss 这样的功能,存放文件还是要使用阿里云的接口,使用files可以通过 settings.py定义存储路径,我目前是在前端的系统配置页面写了表单,方便用户更改存储方式(如下图),files 也支持指定而非只能读取配置。 |
|
你说的没错,官方没有提供oss 集成,但这个功能是可扩展的,比如已有的项目 https://django-storages.readthedocs.io/en/latest/index.html 提供了 S3 的集成,而阿里云oss 是兼容 s3 协议的。 我个人更偏向django提供的这个interface,社区很有可能有很多现成的集成,后续archery 做自定义的扩展也会很简单,自己定义也很有可能和这个差不了多少。 |
|
下载功能,挺好的。 |
|
@Wondermique 这个pr有进展吗? |
|
这个方案还在进行么 |
|
期待这个方案 |
|
我合并代码之后,也配置了离线下载权限,但是查询界面没有出现“切换至导出”的按钮,奇怪。 |

1、sql/templates/sqlsubmit.html
添加导出工单参数,默认为非导出工单
2、sql/templates/sqlquery.html
增加导出工单表单信息,并增加扫描行数检查
3、common/templates/config.html
增加导出工单相关配置表单
4、sql/views.py
传递相关页面所需值
5、sql/templates/sqlworkflow.html
增加工单页面,导出格式的显示
6、sql/templates/detail.html
增加下载按钮,与 offlinedownload.py 交互
7、common/check.py
增加config内oss、sftp及本地存储的检查
8、sql_api/serializers.py
传递相关参数
9、sql/utils/workflow_audit.py
取消导出工单的自动审核,正常情况下导出工单不应自动审核
10、sql/engines/offlinedownload.py
导出工单主要代码
11、sql/engines/goinception.py
增加导出工单类型
12、sql/engines/mysql.py
传递相关参数
13、sql/models.py
(1)syntax_type新增(3,导出工单)
(2)新增字段is_offline_export、export_format、file_name
(3)permissions新增("offline_download", "离线下载权限")
涉及 sql:
alter table sql_workflow
add column export_format varchar(10) DEFAULT NULL,
add column is_offline_export varchar(3) NOT NULL,
add column file_name varchar(255) DEFAULT NULL;
14、sql/sql_workflow.py
增加导出格式参数
15、sql/urls.py
增加 offlinedownload 的路由
新增 sql 脚本: src/init_sql/v1.11.1_offlinedownload.sql 与上方 sql 内容一致,无需反复执行 新增依赖:






sqlparse==0.4.4
paramiko==3.4.0
oss2==2.18.3
openpyxl==3.1.2