diff --git a/ecs/jskult-webapp/src/controller/ultmarc.py b/ecs/jskult-webapp/src/controller/ultmarc.py index 8ba036e1..825c8b50 100644 --- a/ecs/jskult-webapp/src/controller/ultmarc.py +++ b/ecs/jskult-webapp/src/controller/ultmarc.py @@ -240,7 +240,8 @@ def search_doc( ultmarc = ultmarc_service.prepare_ultmarc_doctor_search_view() ultmarc.is_batch_processing = is_batch_processing ultmarc.doctor_data = ultmarc_doctor_data - ultmarc.form_data = ultmarc_doctor_form + # 画面表示用にエスケープを解除して返す + ultmarc.form_data = ultmarc_doctor_form.unescape() # セッション書き換え session.update( diff --git a/ecs/jskult-webapp/src/model/request/request_base_model.py b/ecs/jskult-webapp/src/model/request/request_base_model.py new file mode 100644 index 00000000..8194e7c0 --- /dev/null +++ b/ecs/jskult-webapp/src/model/request/request_base_model.py @@ -0,0 +1,20 @@ +import html + +from pydantic import BaseModel + +from src.util.sanitize import sanitize + + +@sanitize +class RequestBaseModel(BaseModel): + """ + Webのリクエストを受け取る共通モデルクラス + 保持するメンバはエスケープされる + エスケープを解除するには、unescapeメソッドを使用する + """ + + def unescape(self): + for k, v in self.dict().items(): + if v is not None and type(v) is str: + setattr(self, k, html.unescape(v)) + return self diff --git a/ecs/jskult-webapp/src/model/request/ultmarc_doctor.py b/ecs/jskult-webapp/src/model/request/ultmarc_doctor.py index 18ca1e37..6015731e 100644 --- a/ecs/jskult-webapp/src/model/request/ultmarc_doctor.py +++ b/ecs/jskult-webapp/src/model/request/ultmarc_doctor.py @@ -1,13 +1,11 @@ from typing import Optional from fastapi import Form -from pydantic import BaseModel -from src.util.sanitize import sanitize +from src.model.request.request_base_model import RequestBaseModel -@sanitize -class UltmarcDoctorSearchModel(BaseModel): +class UltmarcDoctorSearchModel(RequestBaseModel): dcf_pcf_dr_cd: Optional[str] dr_name: Optional[str] dr_name_kana: Optional[str] @@ -54,7 +52,7 @@ class UltmarcDoctorSearchModel(BaseModel): ) -class UltmarcDoctorInfoModel(BaseModel): +class UltmarcDoctorInfoModel(RequestBaseModel): doc_id: Optional[str] page_num: Optional[int] diff --git a/ecs/jskult-webapp/src/model/request/ultmarc_inst.py b/ecs/jskult-webapp/src/model/request/ultmarc_inst.py index ba9cce90..bddd3d9f 100644 --- a/ecs/jskult-webapp/src/model/request/ultmarc_inst.py +++ b/ecs/jskult-webapp/src/model/request/ultmarc_inst.py @@ -2,13 +2,12 @@ import html from typing import Optional from fastapi import Form -from pydantic import BaseModel -from src.util.sanitize import sanitize +from src.model.request.request_base_model import RequestBaseModel -@sanitize -class UltmarcInstSearchModel(BaseModel): +# @sanitize +class UltmarcInstSearchModel(RequestBaseModel): dcf_dsf_inst_cd: Optional[str] inst_div_cd: Optional[str] form_inst_name_kanji: Optional[str] @@ -54,7 +53,7 @@ class UltmarcInstSearchModel(BaseModel): return self -class UltmarcInstInfoModel(BaseModel): +class UltmarcInstInfoModel(RequestBaseModel): inst_id: Optional[str] page_num: Optional[int]