-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
增加离线导出工单,可通过查询页面右侧切换 #2685
base: master
Are you sure you want to change the base?
增加离线导出工单,可通过查询页面右侧切换 #2685
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 Medium
Stack trace information
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 High
user-provided value
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 High
user-provided value
看了你提供的 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