From 84053eebf550a0c73aa803ad32aa7ed5dd9eba56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Wed, 19 Jul 2023 09:37:20 +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 --- .../src/controller/master_mainte.py | 22 ++++++++++++++----- .../repositories/emp_chg_inst_repository.py | 2 -- .../src/services/master_mainte_service.py | 5 +---- ecs/jskult-webapp/src/system_var/constants.py | 3 ++- .../src/templates/instEmpCsvDL.html | 3 +-- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/ecs/jskult-webapp/src/controller/master_mainte.py b/ecs/jskult-webapp/src/controller/master_mainte.py index 1538e02a..f3fbd220 100644 --- a/ecs/jskult-webapp/src/controller/master_mainte.py +++ b/ecs/jskult-webapp/src/controller/master_mainte.py @@ -136,12 +136,22 @@ 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(csv_buf), encoding='utf-8'), - len(csv_buf), - csv_upload_form.csv_file.filename, - csv_upload_form) + csv_upload_form.csv_file.file.seek(0, 2) + if csv_upload_form.csv_file.file.tell() >= constants.MENTE_CSV_UPLOAD_MAX_FILE_SIZE_BYTE: + error_message_list = [] + error_message_list.append('選択されたCSVファイルサイズが大きいです。100MB未満にしてください。') + mainte_csv_up = InstEmpCsvUploadViewModel( + is_verified=True, + error_message_list=error_message_list, + select_function=csv_upload_form.select_function, + select_table=csv_upload_form.select_table + ) + else: + csv_upload_form.csv_file.file.seek(0) + mainte_csv_up = master_mainte_service.prepare_mainte_csv_up_view( + TextIOWrapper(BytesIO(await csv_upload_form.csv_file.read()), encoding='utf-8'), + csv_upload_form.csv_file.filename, + csv_upload_form) # セッション書き換え session.update( actions=[ diff --git a/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py b/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py index 04e8b0d7..ec6e5df3 100644 --- a/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py +++ b/ecs/jskult-webapp/src/repositories/emp_chg_inst_repository.py @@ -188,13 +188,11 @@ class EmpChgInstRepository(BaseRepository): def fetch_as_data_frame(self, table_name: str, parameter: MasterMainteCsvDlModel): try: self._database.connect() - logger.debug('DB参照実行') where_clause = self.__build_condition(parameter) query = self.FETCH_SQL.format(table_name=table_name, where_clause=where_clause) logger.debug(f'SQL: {query}') df = self._to_data_frame(query, parameter) logger.debug(f'count= {len(df.index)}') - # ログ出力のため、クエリも返却 return df except Exception as e: logger.exception(f"DB Error : Exception={e.args}") diff --git a/ecs/jskult-webapp/src/services/master_mainte_service.py b/ecs/jskult-webapp/src/services/master_mainte_service.py index b63ad123..863ddfae 100644 --- a/ecs/jskult-webapp/src/services/master_mainte_service.py +++ b/ecs/jskult-webapp/src/services/master_mainte_service.py @@ -59,7 +59,6 @@ class MasterMainteService(BaseService): def prepare_mainte_csv_up_view(self, file: TextIOWrapper, - file_size: int, csv_file_name: str, csv_upload_form: MasterMainteCsvUpModel) -> InstEmpCsvUploadViewModel: @@ -84,8 +83,6 @@ 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()]) @@ -136,7 +133,7 @@ class MasterMainteService(BaseService): (result_message_list, raw_error_list) = emp_chg_inst.save() error_message_list = [] - error_message_list.extend([data for data in raw_error_list]) + error_message_list.extend(raw_error_list) mainte_csv_up = InstEmpCsvUploadViewModel( is_insert=True, diff --git a/ecs/jskult-webapp/src/system_var/constants.py b/ecs/jskult-webapp/src/system_var/constants.py index e220249c..a50d498e 100644 --- a/ecs/jskult-webapp/src/system_var/constants.py +++ b/ecs/jskult-webapp/src/system_var/constants.py @@ -250,4 +250,5 @@ MENTE_CSV_DOWNLOAD_HEADER = [ MENTE_CSV_DOWNLOAD_FILE_NAME = 'instEmpData.csv' -MENTE_CSV_UPLOAD_MAX_FILE_SIZE = 104857600 +# CSVアップロードの制限サイズ=100MB +MENTE_CSV_UPLOAD_MAX_FILE_SIZE_BYTE = 104857600 diff --git a/ecs/jskult-webapp/src/templates/instEmpCsvDL.html b/ecs/jskult-webapp/src/templates/instEmpCsvDL.html index 78bc147e..3a370f37 100644 --- a/ecs/jskult-webapp/src/templates/instEmpCsvDL.html +++ b/ecs/jskult-webapp/src/templates/instEmpCsvDL.html @@ -8,13 +8,12 @@