feat: リクエストの基底モデルを作成。サニタイズ、エスケープを解除を共通化

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2023-06-21 14:53:08 +09:00
parent 89f43e79df
commit 7d74a59320
4 changed files with 29 additions and 11 deletions

View File

@ -240,7 +240,8 @@ def search_doc(
ultmarc = ultmarc_service.prepare_ultmarc_doctor_search_view() ultmarc = ultmarc_service.prepare_ultmarc_doctor_search_view()
ultmarc.is_batch_processing = is_batch_processing ultmarc.is_batch_processing = is_batch_processing
ultmarc.doctor_data = ultmarc_doctor_data ultmarc.doctor_data = ultmarc_doctor_data
ultmarc.form_data = ultmarc_doctor_form # 画面表示用にエスケープを解除して返す
ultmarc.form_data = ultmarc_doctor_form.unescape()
# セッション書き換え # セッション書き換え
session.update( session.update(

View File

@ -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

View File

@ -1,13 +1,11 @@
from typing import Optional from typing import Optional
from fastapi import Form 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(RequestBaseModel):
class UltmarcDoctorSearchModel(BaseModel):
dcf_pcf_dr_cd: Optional[str] dcf_pcf_dr_cd: Optional[str]
dr_name: Optional[str] dr_name: Optional[str]
dr_name_kana: Optional[str] dr_name_kana: Optional[str]
@ -54,7 +52,7 @@ class UltmarcDoctorSearchModel(BaseModel):
) )
class UltmarcDoctorInfoModel(BaseModel): class UltmarcDoctorInfoModel(RequestBaseModel):
doc_id: Optional[str] doc_id: Optional[str]
page_num: Optional[int] page_num: Optional[int]

View File

@ -2,13 +2,12 @@ import html
from typing import Optional from typing import Optional
from fastapi import Form from fastapi import Form
from pydantic import BaseModel
from src.util.sanitize import sanitize from src.model.request.request_base_model import RequestBaseModel
@sanitize # @sanitize
class UltmarcInstSearchModel(BaseModel): class UltmarcInstSearchModel(RequestBaseModel):
dcf_dsf_inst_cd: Optional[str] dcf_dsf_inst_cd: Optional[str]
inst_div_cd: Optional[str] inst_div_cd: Optional[str]
form_inst_name_kanji: Optional[str] form_inst_name_kanji: Optional[str]
@ -54,7 +53,7 @@ class UltmarcInstSearchModel(BaseModel):
return self return self
class UltmarcInstInfoModel(BaseModel): class UltmarcInstInfoModel(RequestBaseModel):
inst_id: Optional[str] inst_id: Optional[str]
page_num: Optional[int] page_num: Optional[int]