From e7c78ec8ae0c410689ca913285c78e478f7de6df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Tue, 18 Jul 2023 17:58:22 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E6=8C=87=E6=91=98=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-webapp/src/controller/master_mainte.py | 4 +++- ecs/jskult-webapp/src/services/master_mainte_service.py | 3 +++ ecs/jskult-webapp/src/system_var/constants.py | 2 ++ ecs/jskult-webapp/src/templates/instEmpCsvDL.html | 4 ++-- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ecs/jskult-webapp/src/controller/master_mainte.py b/ecs/jskult-webapp/src/controller/master_mainte.py index 3fe61846..1538e02a 100644 --- a/ecs/jskult-webapp/src/controller/master_mainte.py +++ b/ecs/jskult-webapp/src/controller/master_mainte.py @@ -136,8 +136,10 @@ async def inst_emp_csv_upload( raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BACKUP_PROCESSING) # 画面表示用のモデル + csv_buf = await csv_upload_form.csv_file.read() mainte_csv_up = master_mainte_service.prepare_mainte_csv_up_view( - TextIOWrapper(BytesIO(await csv_upload_form.csv_file.read()), encoding='utf-8'), + TextIOWrapper(BytesIO(csv_buf), encoding='utf-8'), + len(csv_buf), csv_upload_form.csv_file.filename, csv_upload_form) # セッション書き換え diff --git a/ecs/jskult-webapp/src/services/master_mainte_service.py b/ecs/jskult-webapp/src/services/master_mainte_service.py index 54849b98..b63ad123 100644 --- a/ecs/jskult-webapp/src/services/master_mainte_service.py +++ b/ecs/jskult-webapp/src/services/master_mainte_service.py @@ -59,6 +59,7 @@ class MasterMainteService(BaseService): def prepare_mainte_csv_up_view(self, file: TextIOWrapper, + file_size: int, csv_file_name: str, csv_upload_form: MasterMainteCsvUpModel) -> InstEmpCsvUploadViewModel: @@ -83,6 +84,8 @@ class MasterMainteService(BaseService): # CSVファイル0件(ヘッダ行のみ)チェック if len(csv_items.lines) == 0: error_message_list.append('選択されたExcelファイルの2行目以降に値が記入されておりません。') + elif file_size >= constants.MENTE_CSV_UPLOAD_MAX_FILE_SIZE: + error_message_list.append('選択されたCSVファイルサイズが大きいです。100MB未満にしてください。') else: for row_item in csv_items: error_message_list.extend([data for data in row_item.validate()]) diff --git a/ecs/jskult-webapp/src/system_var/constants.py b/ecs/jskult-webapp/src/system_var/constants.py index 0c021b73..e220249c 100644 --- a/ecs/jskult-webapp/src/system_var/constants.py +++ b/ecs/jskult-webapp/src/system_var/constants.py @@ -249,3 +249,5 @@ MENTE_CSV_DOWNLOAD_HEADER = [ ] MENTE_CSV_DOWNLOAD_FILE_NAME = 'instEmpData.csv' + +MENTE_CSV_UPLOAD_MAX_FILE_SIZE = 104857600 diff --git a/ecs/jskult-webapp/src/templates/instEmpCsvDL.html b/ecs/jskult-webapp/src/templates/instEmpCsvDL.html index e52de75a..78bc147e 100644 --- a/ecs/jskult-webapp/src/templates/instEmpCsvDL.html +++ b/ecs/jskult-webapp/src/templates/instEmpCsvDL.html @@ -14,13 +14,13 @@ formBtDisabled(); // DatePickerを有効化 enableDatePicker(); +{% if mainte_csv_dl.is_search and mainte_csv_dl.data_count > 0 and mainte_csv_dl.is_download_file_url_empty() == False %} // CSV自動ダウンロード処理 -{% if mainte_csv_dl.is_search and mainte_csv_dl.data_count > 0 and mainte_csv_dl.is_download_file_url_empty == False %} var link_tag = document.createElement("a"); link_tag.Target="_blank"; link_tag.id = "download_url_link"; + link_tag.style.display = 'none'; link_tag.setAttribute("href", "{{mainte_csv_dl.download_file_url | safe}}"); - link_tag.setAttribute("type", "hidden"); link_tag.setAttribute("download", "{{mainte_csv_dl.file_name}}"); document.getElementById("notification").appendChild(link_tag); document.getElementById("download_url_link").click();