
python| まとめ | 現役エンジニア&プログラミングスクール講師「python」のまとめページです。pythonに関して抑えておきたい知識や文法やにについて記事をまとめています。まとめページの下部には「おすすめの学習書籍」「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中...
目標
- 同一テーブル番号でQRコードの生成を行った場合は既存のQRコードを再表示する
- QRコード生成のフォームで利用中のテーブル番号には利用中を表示させる
QRコードアプリケーションのカスタマイズ
ここでは、前回同様「feature-qrcode-securityブランチ」で作業を行います。
同一テーブル番号でQRコードの生成を行った場合の処理
同一テーブル番号で再度QRコードの生成が行われた場合は既存のQRコードを表示して、新しいトークンが生成されないようにします。
apps/qrcodeapp/app.py
apps/qrcodeapp/app.pyファイルにすでに有効なトークンが存在するかを確認するためのプログラムを準備します。
# すでに有効なトークン(未会計のもの)が存在するか確認
existing_token = (
db.session.query(TableAccessToken)
.filter(
TableAccessToken.table_id == table.id,
TableAccessToken.bill_id.is_(None), # 未会計
TableAccessToken.expires_at > datetime.now(timezone.utc), # 有効期限内
)
.first()
)
ユーザーからQRコード生成のリクエストが来た時に、条件分岐を利用して必要のない新しいQRコードが生成されないように処理します。
if request.method == "POST":
table_id = int(request.form.get("table_id"))
# すでに有効なトークン(未会計のもの)が存在するか確認
existing_token = (
db.session.query(TableAccessToken)
.filter(
TableAccessToken.table_id == table_id,
TableAccessToken.bill_id.is_(None), # 未会計
TableAccessToken.expires_at > datetime.now(timezone.utc), # 有効期限内
)
.first()
)
if existing_token:
# 既存のトークンがあるのでそれを使う
token = existing_token.token
else:
# トークンが無い or 有効期限切れ or 会計済 → 新規作成
token = create_token_for_table(table_id)
generate_qr_url(table_id, token)
# 表示用にQRコード画像パスを設定(再生成の有無に関わらず)
qr_image_url = f"/static/qrcodes/table_{table_id}.png"
selected_table_id = table_id
apps/qrcodeapp/app.pyファイルを次のように編集します。

今回は以上になります。

「python」おすすめ書籍 ベスト3 | 現役エンジニア&プログラミングスクール講師「python」の学習でお勧めしたい書籍をご紹介しています。お勧めする理由としては、考え方、イメージなどを適切に捉えていること、「生のpython」に焦点をあてて解説をしている書籍であることなどが理由です。勿論、この他にも良い書籍はありますが、特に質の高かったものを選んで記事にしています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...

【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
Blueprint Flask Flask-SQLAlchemy Jinja2 MVT python session SQLite アップロード エンジニア セッション テンプレートエンジン バリデーション フレームワーク ルーティング 作成方法 初心者 利用方法 注意点 画像 統合
この続きはNoteとなります。