feat: API化に伴い、不要になったビューモデルのメソッドとテンプレートへの埋め込みを削除
This commit is contained in:
parent
1a24f2675f
commit
292960e33b
@ -1,14 +1,9 @@
|
||||
import json
|
||||
from collections import OrderedDict
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from src.model.db.pharmacy_product_master import PharmacyProductMasterModel
|
||||
from src.model.db.wholesaler_master import WholesalerMasterModel
|
||||
from src.model.request.bio import BioModel
|
||||
from src.model.view.bio_disp_model import BioDisplayModel
|
||||
from src.system_var import environment
|
||||
|
||||
|
||||
@ -17,9 +12,8 @@ class BioViewModel(BaseModel):
|
||||
user_id: str
|
||||
whs_models: list[WholesalerMasterModel]
|
||||
phm_models: list[PharmacyProductMasterModel]
|
||||
bio_data: Optional[list[BioDisplayModel]] = None
|
||||
form_data: BioModel = None
|
||||
excel_max_lines: int = str(environment.BIO_EXCEL_RESULT_MAX_COUNT)
|
||||
search_data_max_length: int = environment.BIO_SEARCH_RESULT_MAX_COUNT
|
||||
excel_max_lines: str = str(environment.BIO_EXCEL_RESULT_MAX_COUNT)
|
||||
|
||||
def display_wholesaler_names(self):
|
||||
display_names = [
|
||||
@ -49,117 +43,3 @@ class BioViewModel(BaseModel):
|
||||
'2': '除外'
|
||||
}
|
||||
)
|
||||
|
||||
def bio_data_json_str(self):
|
||||
"""生物由来ロット分解データの検索結果を指定された件数ごとに分割しながら返す"""
|
||||
def date_handler(obj):
|
||||
"""json.dumpsの日付項目のフォーマットハンドラ"""
|
||||
return obj.isoformat().replace('T', ' ') if hasattr(obj, 'isoformat') else obj
|
||||
|
||||
search_data_list = [model.model_dump() for model in self.bio_data]
|
||||
search_data_len = len(search_data_list)
|
||||
# 呼び出し一回あたりの分割数
|
||||
part_size = 500
|
||||
for i in range(0, search_data_len, part_size):
|
||||
json_str = json.dumps(search_data_list[i:i + part_size], ensure_ascii=False, default=date_handler)
|
||||
# JavaScriptに埋め込むため、クォートをエスケープ
|
||||
json_str = json_str.replace("'", "\\'")
|
||||
json_str = json_str.replace('\\"', '\\\\"')
|
||||
yield json_str
|
||||
|
||||
def make_whs_name(self):
|
||||
if not self.is_form_submitted():
|
||||
return ''
|
||||
if self.form_data.rec_whs_cd is None:
|
||||
return ''
|
||||
|
||||
form_wholesaler_full_name = \
|
||||
f'{self.form_data.rec_whs_cd}-{self.form_data.rec_whs_sub_cd}:{self.form_data.whs_name}'
|
||||
|
||||
return form_wholesaler_full_name
|
||||
|
||||
def is_selected_whs_name(self, selected_wholesaler):
|
||||
if not self.is_form_submitted():
|
||||
return ''
|
||||
|
||||
form_wholesaler_full_name = \
|
||||
f'{self.form_data.rec_whs_cd}-{self.form_data.rec_whs_sub_cd}:{self.form_data.whs_name}'
|
||||
|
||||
return self._selected_value(form_wholesaler_full_name, selected_wholesaler)
|
||||
|
||||
def is_selected_org_kbn(self, selected_org_kbn):
|
||||
if not self.is_form_submitted():
|
||||
return ''
|
||||
return self._selected_value(self.form_data.slip_org_kbn, selected_org_kbn)
|
||||
|
||||
def is_input_rec_ymd_from(self):
|
||||
if not self.is_form_submitted():
|
||||
return ''
|
||||
|
||||
return self._format_date_string(self.form_data.rec_ymd_from)
|
||||
|
||||
def is_input_rec_ymd_to(self):
|
||||
if not self.is_form_submitted():
|
||||
return ''
|
||||
|
||||
return self._format_date_string(self.form_data.rec_ymd_to)
|
||||
|
||||
def is_input_lot_num(self):
|
||||
if not self.is_form_submitted():
|
||||
return ''
|
||||
|
||||
return self.form_data.rec_lot_num or ''
|
||||
|
||||
def is_selected_data_kbn(self, selected_data_kbn):
|
||||
if not self.is_form_submitted():
|
||||
return ''
|
||||
|
||||
return self._selected_value(self.form_data.data_kbn, selected_data_kbn)
|
||||
|
||||
def is_selected_maker_cd(self, selected_maker_cd):
|
||||
if not self.is_form_submitted():
|
||||
return ''
|
||||
|
||||
return self._selected_value(self.form_data.mkr_cd, selected_maker_cd)
|
||||
|
||||
def is_input_rev_hsdnymd_srk_from(self):
|
||||
if not self.is_form_submitted():
|
||||
return ''
|
||||
|
||||
return self._format_date_string(self.form_data.rev_hsdnymd_srk_from)
|
||||
|
||||
def is_input_rev_hsdnymd_srk_to(self):
|
||||
if not self.is_form_submitted():
|
||||
return ''
|
||||
|
||||
return self._format_date_string(self.form_data.rev_hsdnymd_srk_to)
|
||||
|
||||
def is_checked_iko_flg(self):
|
||||
if not self.is_form_submitted():
|
||||
return ''
|
||||
|
||||
return 'checked' if self.form_data.iko_flg else ''
|
||||
|
||||
def disabled_button(self):
|
||||
return 'disabled' if self.is_data_empty() or self.is_data_overflow_max_length() else ''
|
||||
|
||||
def is_form_submitted(self):
|
||||
return self.form_data is not None
|
||||
|
||||
def is_data_empty(self):
|
||||
return self.bio_data is None or len(self.bio_data) == 0
|
||||
|
||||
def is_data_overflow_max_length(self):
|
||||
return self.bio_data is None or len(self.bio_data) > environment.BIO_SEARCH_RESULT_MAX_COUNT
|
||||
|
||||
def data_overflow_max_length(self):
|
||||
return environment.BIO_SEARCH_RESULT_MAX_COUNT
|
||||
|
||||
def _format_date_string(self, date_string):
|
||||
if date_string is None:
|
||||
return ''
|
||||
date = datetime.strptime(date_string, '%Y%m%d')
|
||||
return date.strftime('%Y/%m/%d')
|
||||
|
||||
def _selected_value(self, form_value: str, current_value: str):
|
||||
return 'selected' if form_value == current_value else ''
|
||||
|
||||
@ -37,9 +37,7 @@
|
||||
<select class="text search_dropdown" name="ctrl_wholesaler" value="" onChange="formBtDisabled();applySearchParam(this)">
|
||||
<option value=""></option>
|
||||
{% for whs_name in bio.display_wholesaler_names() %}
|
||||
<option
|
||||
value="{{whs_name}}"
|
||||
{{bio.is_selected_whs_name(whs_name)}}>
|
||||
<option value="{{whs_name}}">
|
||||
{{whs_name}}
|
||||
</option>
|
||||
{% endfor %}
|
||||
@ -49,19 +47,21 @@
|
||||
<td class="search_tb">
|
||||
<select class="text search_dropdown" name="ctrl_org_kbn" onChange="formBtDisabled();applySearchParam(this)" value="">
|
||||
{% for org_kbn_code, org_kbn_value in bio.display_org_kbn().items() %}
|
||||
<option value="{{org_kbn_code}}" {{bio.is_selected_org_kbn(org_kbn_code)}} >{{org_kbn_value}}</option>
|
||||
<option value="{{org_kbn_code}}">
|
||||
{{org_kbn_value}}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
<td>処理日:</td>
|
||||
<td colspan="2">
|
||||
<input type="text" id="shoribi_start" class="date_picker" name="ctrl_rec_ymd_from" maxlength="10"
|
||||
value="{{bio.is_input_rec_ymd_from()}}"
|
||||
value=""
|
||||
onchange="formBtDisabled();applySearchParam(this)"
|
||||
>
|
||||
~
|
||||
<input type="text" id="shoribi_end" class="date_picker" name="ctrl_rec_ymd_to" maxlength="10"
|
||||
value="{{bio.is_input_rec_ymd_to()}}"
|
||||
value=""
|
||||
onchange="formBtDisabled();applySearchParam(this)"
|
||||
>
|
||||
</td>
|
||||
@ -70,14 +70,16 @@
|
||||
<td>ロット番号:</td>
|
||||
<td class="search_tb">
|
||||
<input class="text" type="text" id="lot_tb" name="ctrl_rec_lot_num" style="ime-mode:disabled" maxlength="10"
|
||||
value="{{bio.is_input_lot_num()}}"
|
||||
value=""
|
||||
oninput="checkSpaceForm(this); checkAimaiSearhForm(this); formBtDisabled();applySearchParam(this)">
|
||||
</td>
|
||||
<td>データ区分:</td>
|
||||
<td class="search_tb">
|
||||
<select class="text search_dropdown" name="ctrl_data_kbn" onchange="formBtDisabled();applySearchParam(this)">
|
||||
{% for data_kbn_code, data_kbn_value in bio.display_data_kbn().items() %}
|
||||
<option value="{{data_kbn_value}}" {{bio.is_selected_data_kbn(data_kbn_value)}} >{{data_kbn_value}}</option>
|
||||
<option option value="{{data_kbn_value}}">
|
||||
{{data_kbn_value}}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
@ -86,10 +88,9 @@
|
||||
<select class="text search_dropdown" name="ctrl_maker_cd" value="" onChange="formBtDisabled();applySearchParam(this);">
|
||||
<option value=""></option>
|
||||
{% for phm in bio.phm_models %}
|
||||
<option
|
||||
value="{{phm['mkr_cd']}}" {{bio.is_selected_maker_cd(phm['mkr_cd'])}}>
|
||||
{{phm['mkr_cd_name']}}
|
||||
</option>
|
||||
<option value="{{phm['mkr_cd']}}">
|
||||
{{phm['mkr_cd_name']}}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
@ -98,22 +99,21 @@
|
||||
<td>発伝年月日:</td>
|
||||
<td colspan="3">
|
||||
<input type="text" id="hsdnymd_start" class="date_picker" name="ctrl_rev_hsdnymd_srk_from" maxlength="10"
|
||||
value="{{bio.is_input_rev_hsdnymd_srk_from()}}"
|
||||
value=""
|
||||
onchange="formBtDisabled();applySearchParam(this)"
|
||||
>
|
||||
~
|
||||
<input type="text" id="hsdnymd_end" class="date_picker" name="ctrl_rev_hsdnymd_srk_to" maxlength="10"
|
||||
value="{{bio.is_input_rev_hsdnymd_srk_to()}}"
|
||||
value=""
|
||||
onchange="formBtDisabled();applySearchParam(this)"
|
||||
>
|
||||
</td>
|
||||
<td colspan="2">
|
||||
<input type="checkbox" id="ikoFlg" name="ikoFlg" value="true" {{bio.is_checked_iko_flg()}} oninput="applySearchParam(this)">
|
||||
<input type="checkbox" id="ikoFlg" name="ikoFlg" value="true" oninput="applySearchParam(this)">
|
||||
<label for="ikoFlg">2017年11月以前のデータを含める</label>
|
||||
</td>
|
||||
<td>
|
||||
<input class="buttonSize" id="clear" type="button" name="clear_bt" value="クリア" onclick="clr()">
|
||||
<!-- <input class="buttonSize" id="search_bt" value="検索" type="submit"> -->
|
||||
<input class="buttonSize" id="search_bt" value="検索" type="button" onclick="searchBioList()">
|
||||
</td>
|
||||
</tr>
|
||||
@ -175,35 +175,26 @@
|
||||
<tbody id="result_data" class="result_data"></tbody>
|
||||
</table>
|
||||
<div id="message_area" class="resultAreaMsg"></div>
|
||||
{% if bio.is_form_submitted() and bio.is_data_overflow_max_length() %}
|
||||
検索結果が最大件数を超えました。検索条件を見直しして下さい。
|
||||
|
||||
{% endif %}
|
||||
{% if bio.is_form_submitted() and bio.is_data_empty() %}
|
||||
<div class="resultAreaMsg">
|
||||
対象のデータが存在しません
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</form>
|
||||
<form id="search_param_hidden" name="bioHidden">
|
||||
<input type="hidden" name="ctrl_wholesaler" value="{{bio.make_whs_name()}}">
|
||||
<input type="hidden" name="ctrl_org_kbn" value="{{bio.form_data.slip_org_kbn or ''}}">
|
||||
<input type="hidden" name="ctrl_rec_ymd_from" value="{{bio.is_input_rec_ymd_from()}}">
|
||||
<input type="hidden" name="ctrl_rec_ymd_to" value="{{bio.is_input_rec_ymd_to()}}">
|
||||
<input type="hidden" name="ctrl_rec_lot_num" value="{{bio.is_input_lot_num()}}">
|
||||
<input type="hidden" name="ctrl_data_kbn" value="{{bio.form_data.data_kbn or ''}}">
|
||||
<input type="hidden" name="ctrl_maker_cd" value="{{bio.form_data.mkr_cd or ''}}">
|
||||
<input type="hidden" name="ctrl_rev_hsdnymd_srk_from" value="{{bio.is_input_rev_hsdnymd_srk_from()}}">
|
||||
<input type="hidden" name="ctrl_rev_hsdnymd_srk_to" value="{{bio.is_input_rev_hsdnymd_srk_to()}}">
|
||||
<input type="checkbox" name="ikoFlg" value="true" {{bio.is_checked_iko_flg()}} style="display: none;">
|
||||
<input type="hidden" name="ctrl_wholesaler" value="">
|
||||
<input type="hidden" name="ctrl_org_kbn" value="">
|
||||
<input type="hidden" name="ctrl_rec_ymd_from" value="">
|
||||
<input type="hidden" name="ctrl_rec_ymd_to" value="">
|
||||
<input type="hidden" name="ctrl_rec_lot_num" value="">
|
||||
<input type="hidden" name="ctrl_data_kbn" value="">
|
||||
<input type="hidden" name="ctrl_maker_cd" value="">
|
||||
<input type="hidden" name="ctrl_rev_hsdnymd_srk_from" value="">
|
||||
<input type="hidden" name="ctrl_rev_hsdnymd_srk_to" value="">
|
||||
<input type="checkbox" name="ikoFlg" value="true" style="display: none;">
|
||||
</form>
|
||||
|
||||
<script type="text/javascript">
|
||||
// CSV/Excelダウンロード処理
|
||||
function download(ext) {
|
||||
// ローディング開始
|
||||
const loading = new Loading();
|
||||
const loading = new Loading('');
|
||||
loading.start();
|
||||
|
||||
// ダウンロード固有のパラメータを設定
|
||||
@ -296,7 +287,7 @@
|
||||
const messageArea = $('#message_area')
|
||||
messageArea.text('')
|
||||
messageArea.hide()
|
||||
const loading = new Loading()
|
||||
const loading = new Loading('_loading_for_other')
|
||||
const searchParams = createSearchParams()
|
||||
$('.pagination').pagination({
|
||||
dataSource: '/bio/search',
|
||||
@ -390,7 +381,7 @@
|
||||
}
|
||||
|
||||
function bioDataOverflowMaxLength() {
|
||||
const maxlength = '{{bio.data_overflow_max_length()}}'
|
||||
const maxlength = '{{bio.search_data_max_length}}'
|
||||
return Number(maxlength)
|
||||
}
|
||||
|
||||
@ -449,19 +440,6 @@
|
||||
})
|
||||
}
|
||||
|
||||
function generateSearchResult(){
|
||||
const searchResultData = []
|
||||
// {% if bio.is_form_submitted() and not (bio.is_data_overflow_max_length() or bio.is_data_empty()) %}
|
||||
// {% autoescape False%}
|
||||
// ジェネレータですこしずつ取得してリストに詰める
|
||||
// {% for bio_data_json_str in bio.bio_data_json_str() %}
|
||||
searchResultData.push(...JSON.parse('{{bio_data_json_str}}'))
|
||||
// {% endfor %}
|
||||
// {% endautoescape%}
|
||||
// {% endif %}
|
||||
return searchResultData
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<!-- Excel出力モーダル -->
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user