11-Flask

Flask(Part.64)| 【QRコードアプリケーションのカスタマイズ(1)】

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ファイルを次のように編集します。

この続きはNoteとなります。

今回は以上になります。

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

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
11-Flask

Flask(Part.38)| 【商品管理アプリケーションの修正(3)】

2025年3月31日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
11-Flask

Flask(Part.48)| 【経費管理アプリケーションへの追加プログラミング】

2025年4月10日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
11-Flask

Flask(Part.10)| 【アプリケーション名のリファクタリング】

2025年3月3日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
11-Flask

Flask(Part.49)| 【現金出納帳と預金出納帳での連動処理】

2025年4月11日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site