mirror of https://github.com/jumpserver/jumpserver
perf: 上传文件大小限制
parent
dce1079fdc
commit
27daebbe1b
|
@ -599,6 +599,8 @@ class Config(dict):
|
||||||
'GPT_PROXY': '',
|
'GPT_PROXY': '',
|
||||||
'GPT_MODEL': 'gpt-3.5-turbo',
|
'GPT_MODEL': 'gpt-3.5-turbo',
|
||||||
'VIRTUAL_APP_ENABLED': False,
|
'VIRTUAL_APP_ENABLED': False,
|
||||||
|
|
||||||
|
'FILE_UPLOAD_SIZE_LIMIT_MB': 200
|
||||||
}
|
}
|
||||||
|
|
||||||
old_config_map = {
|
old_config_map = {
|
||||||
|
|
|
@ -221,3 +221,5 @@ GPT_PROXY = CONFIG.GPT_PROXY
|
||||||
GPT_MODEL = CONFIG.GPT_MODEL
|
GPT_MODEL = CONFIG.GPT_MODEL
|
||||||
|
|
||||||
VIRTUAL_APP_ENABLED = CONFIG.VIRTUAL_APP_ENABLED
|
VIRTUAL_APP_ENABLED = CONFIG.VIRTUAL_APP_ENABLED
|
||||||
|
|
||||||
|
FILE_UPLOAD_SIZE_LIMIT_MB = CONFIG.FILE_UPLOAD_SIZE_LIMIT_MB
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:7d9296340c0815fcda81bc7370051b1408225ba63ab7067b397595d4dfb334f7
|
oid sha256:d98ad65b020a577f1e7542c3e8c0c2a289b67d12c39f4d35a5db667fd218e0ea
|
||||||
size 167881
|
size 168292
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-12-13 16:13+0800\n"
|
"POT-Creation-Date: 2023-12-13 18:29+0800\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -4051,10 +4051,16 @@ msgstr "タスクは存在しません"
|
||||||
msgid "Task {} args or kwargs error"
|
msgid "Task {} args or kwargs error"
|
||||||
msgstr "タスク実行パラメータエラー"
|
msgstr "タスク実行パラメータエラー"
|
||||||
|
|
||||||
#: ops/api/job.py:124
|
#: ops/api/job.py:132
|
||||||
msgid "Duplicate file exists"
|
msgid "Duplicate file exists"
|
||||||
msgstr "重複したファイルが存在する"
|
msgstr "重複したファイルが存在する"
|
||||||
|
|
||||||
|
#: ops/api/job.py:137
|
||||||
|
#, python-brace-format
|
||||||
|
msgid ""
|
||||||
|
"File size exceeds maximum limit. Please select a file smaller than {limit}MB"
|
||||||
|
msgstr "ファイルサイズが最大制限を超えています。{limit}MB より小さいファイルを選択してください。"
|
||||||
|
|
||||||
#: ops/api/playbook.py:39
|
#: ops/api/playbook.py:39
|
||||||
msgid "Currently playbook is being used in a job"
|
msgid "Currently playbook is being used in a job"
|
||||||
msgstr "現在プレイブックは1つのジョブで使用されています"
|
msgstr "現在プレイブックは1つのジョブで使用されています"
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:37662b3fc6df22480304d2a5f90cf156ba7d4e0249ec11076e5018daab545714
|
oid sha256:92bd4bd4a6d342dcd259215f16baeedb17fd95d321d4527bb3601ce1dfd72202
|
||||||
size 137610
|
size 137882
|
||||||
|
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: JumpServer 0.3.3\n"
|
"Project-Id-Version: JumpServer 0.3.3\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-12-13 16:13+0800\n"
|
"POT-Creation-Date: 2023-12-13 18:29+0800\n"
|
||||||
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
|
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
|
||||||
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
||||||
"Language-Team: JumpServer team<ibuler@qq.com>\n"
|
"Language-Team: JumpServer team<ibuler@qq.com>\n"
|
||||||
|
@ -4003,10 +4003,16 @@ msgstr "任务 {} 不存在"
|
||||||
msgid "Task {} args or kwargs error"
|
msgid "Task {} args or kwargs error"
|
||||||
msgstr "任务 {} 执行参数错误"
|
msgstr "任务 {} 执行参数错误"
|
||||||
|
|
||||||
#: ops/api/job.py:124
|
#: ops/api/job.py:132
|
||||||
msgid "Duplicate file exists"
|
msgid "Duplicate file exists"
|
||||||
msgstr "存在同名文件"
|
msgstr "存在同名文件"
|
||||||
|
|
||||||
|
#: ops/api/job.py:137
|
||||||
|
#, python-brace-format
|
||||||
|
msgid ""
|
||||||
|
"File size exceeds maximum limit. Please select a file smaller than {limit}MB"
|
||||||
|
msgstr "文件大小超过最大限制。请选择小于 {limit}MB 的文件。"
|
||||||
|
|
||||||
#: ops/api/playbook.py:39
|
#: ops/api/playbook.py:39
|
||||||
msgid "Currently playbook is being used in a job"
|
msgid "Currently playbook is being used in a job"
|
||||||
msgstr "当前 playbook 正在作业中使用"
|
msgstr "当前 playbook 正在作业中使用"
|
||||||
|
|
|
@ -99,7 +99,7 @@ class JobViewSet(OrgBulkModelViewSet):
|
||||||
lambda: run_ops_job_execution.apply_async((str(execution.id),), task_id=str(execution.id)))
|
lambda: run_ops_job_execution.apply_async((str(execution.id),), task_id=str(execution.id)))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_duplicates_filenames(files):
|
def get_duplicates_files(files):
|
||||||
seen = set()
|
seen = set()
|
||||||
duplicates = set()
|
duplicates = set()
|
||||||
for file in files:
|
for file in files:
|
||||||
|
@ -109,6 +109,14 @@ class JobViewSet(OrgBulkModelViewSet):
|
||||||
seen.add(file)
|
seen.add(file)
|
||||||
return list(duplicates)
|
return list(duplicates)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_exceeds_limit_files(files):
|
||||||
|
exceeds_limit_files = []
|
||||||
|
for file in files:
|
||||||
|
if file.size > settings.FILE_UPLOAD_SIZE_LIMIT_MB * 1024 * 1024:
|
||||||
|
exceeds_limit_files.append(file)
|
||||||
|
return exceeds_limit_files
|
||||||
|
|
||||||
@action(methods=[POST], detail=False, serializer_class=FileSerializer, permission_classes=[IsValidUser, ],
|
@action(methods=[POST], detail=False, serializer_class=FileSerializer, permission_classes=[IsValidUser, ],
|
||||||
url_path='upload')
|
url_path='upload')
|
||||||
def upload(self, request, *args, **kwargs):
|
def upload(self, request, *args, **kwargs):
|
||||||
|
@ -117,11 +125,18 @@ class JobViewSet(OrgBulkModelViewSet):
|
||||||
|
|
||||||
if not serializer.is_valid():
|
if not serializer.is_valid():
|
||||||
msg = 'Upload data invalid: {}'.format(serializer.errors)
|
msg = 'Upload data invalid: {}'.format(serializer.errors)
|
||||||
return Response({'msg': msg}, status=400)
|
return Response({'error': msg}, status=400)
|
||||||
|
|
||||||
same_filenames = self.get_duplicates_filenames(uploaded_files)
|
same_files = self.get_duplicates_files(uploaded_files)
|
||||||
if same_filenames:
|
if same_files:
|
||||||
return Response({'msg': _("Duplicate file exists")}, status=400)
|
return Response({'error': _("Duplicate file exists")}, status=400)
|
||||||
|
|
||||||
|
exceeds_limit_files = self.get_exceeds_limit_files(uploaded_files)
|
||||||
|
if exceeds_limit_files:
|
||||||
|
return Response(
|
||||||
|
{'error': _("File size exceeds maximum limit. Please select a file smaller than {limit}MB").format(
|
||||||
|
limit=settings.FILE_UPLOAD_SIZE_LIMIT_MB)},
|
||||||
|
status=400)
|
||||||
|
|
||||||
job_id = request.data.get('job_id', '')
|
job_id = request.data.get('job_id', '')
|
||||||
job = get_object_or_404(Job, pk=job_id)
|
job = get_object_or_404(Job, pk=job_id)
|
||||||
|
|
Loading…
Reference in New Issue