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.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(

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

View File

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