hanabiapp.views.home
1from flask import Flask, Blueprint, render_template, redirect, url_for 2from flask_login import login_required, current_user 3from .. import db 4from ..models.user import User 5 6bp = Blueprint('home', __name__) 7 8@bp.route('/home', methods=['GET']) 9@login_required 10def home(): 11 """ 12 ホームページを表示する関数. 13 14 - ユーザーの総プレイ時間を取得し,テンプレートに渡す. 15 - ユーザーのデータが存在しない場合は,プレイ時間を 0 に設定する. 16 17 Returns: 18 Response: `home.html` テンプレートをレンダリングしたレスポンス 19 """ 20 total_play_time = db.session.execute(db.select(User.total_play_time).where(User.id==current_user.id)).scalar_one_or_none() 21 if total_play_time: 22 return render_template('home.html', total_play_time=total_play_time) 23 else: 24 return render_template('home.html', total_play_time=0) 25 26def format_play_time(seconds): 27 """ 28 総プレイ時間を時・分・秒の形式にフォーマットする関数. 29 30 Args: 31 seconds (int): 総プレイ時間(秒) 32 33 Returns: 34 str: フォーマットされた時間文字列(例: "1時間20分30秒") 35 """ 36 hours = seconds // 3600 37 minutes = (seconds % 3600) // 60 38 secs = seconds % 60 39 40 if hours > 0: 41 return f"{hours}時間{minutes}分{secs}秒" 42 elif minutes > 0: 43 return f"{minutes}分{secs}秒" 44 else: 45 return f"{secs}秒" 46 47def register_filters(app: Flask): 48 """ 49 Jinja2 テンプレートエンジンにカスタムフィルタを登録する関数. 50 51 Args: 52 app (Flask): Flask アプリケーションインスタンス 53 """ 54 app.jinja_env.filters['format_play_time'] = format_play_time
bp =
<Blueprint 'home'>
@bp.route('/home', methods=['GET'])
@login_required
def
home():
9@bp.route('/home', methods=['GET']) 10@login_required 11def home(): 12 """ 13 ホームページを表示する関数. 14 15 - ユーザーの総プレイ時間を取得し,テンプレートに渡す. 16 - ユーザーのデータが存在しない場合は,プレイ時間を 0 に設定する. 17 18 Returns: 19 Response: `home.html` テンプレートをレンダリングしたレスポンス 20 """ 21 total_play_time = db.session.execute(db.select(User.total_play_time).where(User.id==current_user.id)).scalar_one_or_none() 22 if total_play_time: 23 return render_template('home.html', total_play_time=total_play_time) 24 else: 25 return render_template('home.html', total_play_time=0)
ホームページを表示する関数.
- ユーザーの総プレイ時間を取得し,テンプレートに渡す.
- ユーザーのデータが存在しない場合は,プレイ時間を 0 に設定する.
Returns:
Response:
home.html
テンプレートをレンダリングしたレスポンス
def
format_play_time(seconds):
27def format_play_time(seconds): 28 """ 29 総プレイ時間を時・分・秒の形式にフォーマットする関数. 30 31 Args: 32 seconds (int): 総プレイ時間(秒) 33 34 Returns: 35 str: フォーマットされた時間文字列(例: "1時間20分30秒") 36 """ 37 hours = seconds // 3600 38 minutes = (seconds % 3600) // 60 39 secs = seconds % 60 40 41 if hours > 0: 42 return f"{hours}時間{minutes}分{secs}秒" 43 elif minutes > 0: 44 return f"{minutes}分{secs}秒" 45 else: 46 return f"{secs}秒"
総プレイ時間を時・分・秒の形式にフォーマットする関数.
Arguments:
- seconds (int): 総プレイ時間(秒)
Returns:
str: フォーマットされた時間文字列(例: "1時間20分30秒")
def
register_filters(app: flask.app.Flask):
48def register_filters(app: Flask): 49 """ 50 Jinja2 テンプレートエンジンにカスタムフィルタを登録する関数. 51 52 Args: 53 app (Flask): Flask アプリケーションインスタンス 54 """ 55 app.jinja_env.filters['format_play_time'] = format_play_time
Jinja2 テンプレートエンジンにカスタムフィルタを登録する関数.
Arguments:
- app (Flask): Flask アプリケーションインスタンス