diff --git a/lambda/app/bee_slack_app/view/home.py b/lambda/app/bee_slack_app/view/home.py index 16f00085..bb7fe283 100644 --- a/lambda/app/bee_slack_app/view/home.py +++ b/lambda/app/bee_slack_app/view/home.py @@ -18,7 +18,7 @@ def home( # pylint: disable=too-many-locals user_info_action_id: str, total_review_count: int, user_name: str, - recommend_timestamp: str, + recommend_timestamp: Optional[str], books_params: Optional[BooksParam] = None, private_metadata: str = "", ): # pylint: disable=too-many-locals @@ -108,7 +108,7 @@ def home( # pylint: disable=too-many-locals "type": "section", "text": { "type": "mrkdwn", - "text": f"*最新の推薦データ* : {recommend_timestamp}", + "text": f"*最新の推薦データ* : {recommend_timestamp or '--'}", }, }, ], diff --git a/lambda/app/bee_slack_app/view_controller/hello.py b/lambda/app/bee_slack_app/view_controller/hello.py index af7e5f71..da72e392 100644 --- a/lambda/app/bee_slack_app/view_controller/hello.py +++ b/lambda/app/bee_slack_app/view_controller/hello.py @@ -37,13 +37,13 @@ def show_my_review(ack, message, client): ) return - myreviews = "\n・".join(myreviews) - myreviews = f"・{myreviews}" + myreviews_str = "\n・".join(myreviews) + myreviews_str = f"・{myreviews_str}" client.chat_postEphemeral( channel=os.environ["NOTIFY_POST_REVIEW_CHANNEL"], user=user_id, - text=f"<@{user_id}>さんがレビューを投稿した本の一覧です({num_reviews}冊)\n\n {myreviews}", + text=f"<@{user_id}>さんがレビューを投稿した本の一覧です({num_reviews}冊)\n\n {myreviews_str}", ) @app.command("/bee") @@ -75,10 +75,12 @@ def repeat_text(ack, respond, command): respond(f"<@{user_id}>さんはまだレビューを投稿していませんね") return - myreviews = "\n・".join(myreviews) - myreviews = f"・{myreviews}" + myreviews_str = "\n・".join(myreviews) + myreviews_str = f"・{myreviews_str}" - respond(f"<@{user_id}>さんがレビューを投稿した本の一覧です({num_reviews}冊)\n\n {myreviews}") + respond( + f"<@{user_id}>さんがレビューを投稿した本の一覧です({num_reviews}冊)\n\n {myreviews_str}" + ) return respond( diff --git a/lambda/app/bee_slack_app/view_controller/home.py b/lambda/app/bee_slack_app/view_controller/home.py index afcad9c1..c714a577 100644 --- a/lambda/app/bee_slack_app/view_controller/home.py +++ b/lambda/app/bee_slack_app/view_controller/home.py @@ -1,6 +1,6 @@ import json from logging import getLogger -from typing import Any, TypedDict +from typing import Any, Optional, TypedDict from slack_bolt import App @@ -13,7 +13,7 @@ user_service, ) from bee_slack_app.utils.datetime import parse -from bee_slack_app.view import home +from bee_slack_app.view import BooksParam, home BOOK_NUMBER_PER_PAGE = 20 @@ -41,7 +41,7 @@ def update_home_view(ack, event, client): recommended_result = recommend_service.recommend(user) - books_params = None + books_params: Optional[BooksParam] = None metadata_str = "" books = book_service.get_books(limit=BOOK_NUMBER_PER_PAGE, keys=[]) @@ -67,7 +67,9 @@ def update_home_view(ack, event, client): user_info_action_id="user_info_action", total_review_count=total_review_count, user_name=user_name, - recommend_timestamp=parse(recommended_result["created_at"]), + recommend_timestamp=parse(recommended_result["created_at"]) + if recommended_result + else None, books_params=books_params, private_metadata=metadata_str, ), @@ -99,7 +101,7 @@ def home_move_to_next_action(ack, client, body): # pylint: disable=too-many-loc recommended_result = recommend_service.recommend(user) - books_params = None + books_params: Optional[BooksParam] = None metadata_str = "" books = book_service.get_books( @@ -128,7 +130,9 @@ def home_move_to_next_action(ack, client, body): # pylint: disable=too-many-loc user_info_action_id="user_info_action", total_review_count=total_review_count, user_name=user_name, - recommend_timestamp=parse(recommended_result["created_at"]), + recommend_timestamp=parse(recommended_result["created_at"]) + if recommended_result + else None, books_params=books_params, private_metadata=metadata_str, ), @@ -160,7 +164,7 @@ def home_move_to_back_action(ack, client, body): # pylint: disable=too-many-loc private_metadata=private_metadata ) - books_params = None + books_params: Optional[BooksParam] = None metadata_str = "" books = book_service.get_books_before( @@ -184,12 +188,15 @@ def home_move_to_back_action(ack, client, body): # pylint: disable=too-many-loc user_id=user_id, view=home( post_review_action_id="post_review_action", - recommended_books=recommended_result["recommended_books"], + recommended_books=recommended_result + and recommended_result["recommended_books"], list_user_posted_review_action_id="list_user_posted_review_action", user_info_action_id="user_info_action", total_review_count=total_review_count, user_name=user_name, - recommend_timestamp=parse(recommended_result["created_at"]), + recommend_timestamp=parse(recommended_result["created_at"]) + if recommended_result + else None, books_params=books_params, private_metadata=metadata_str, ), @@ -215,7 +222,7 @@ def handle_update_button_action( recommended_result = recommend_service.recommend(user) recommended_books = recommended_result["recommended_books"] - books_params = None + books_params: Optional[BooksParam] = None metadata_str = "" books = book_service.get_books(limit=BOOK_NUMBER_PER_PAGE, keys=[]) @@ -271,7 +278,9 @@ def handle_update_button_action( user_info_action_id="user_info_action", total_review_count=total_review_count, user_name=user_name, - recommend_timestamp=parse(recommended_result["created_at"]), + recommend_timestamp=parse(recommended_result["created_at"]) + if recommended_result + else None, books_params=books_params, private_metadata=metadata_str, ) diff --git a/lambda/app/bee_slack_app/view_controller/review.py b/lambda/app/bee_slack_app/view_controller/review.py index 0ff776bb..a2ce39ac 100644 --- a/lambda/app/bee_slack_app/view_controller/review.py +++ b/lambda/app/bee_slack_app/view_controller/review.py @@ -1,6 +1,6 @@ import json import os -from typing import Any, TypedDict +from typing import Any, Optional, TypedDict from slack_bolt import App @@ -85,11 +85,13 @@ def read_review_of_user_action(ack, body, client, action): reviews = [] + reviews_param: Optional[ReviewPagination] = None + if review_items: reviews = review_items["items"] reviews = _make_review_contents_list_comment_short(reviews) - reviews_param: ReviewPagination = { + reviews_param = { "reviews": reviews, "show_move_to_back": False, "show_move_to_next": review_items["has_next"], @@ -140,7 +142,7 @@ def review_move_to_next_action( ) user_id_of_review = metadata_dict["user_id_of_review"] - reviews_param = None + reviews_param: Optional[ReviewPagination] = None metadata_str = "" review_items = review_service.get_next_reviews_by_user_id( @@ -155,7 +157,7 @@ def review_move_to_next_action( reviews = review_items["items"] reviews = _make_review_contents_list_comment_short(reviews) - reviews_param: ReviewPagination = { + reviews_param = { "reviews": review_items["items"], "show_move_to_back": True, "show_move_to_next": review_items["has_next"], @@ -199,7 +201,7 @@ def review_move_to_back_action( ) user_id_of_review = metadata_dict["user_id_of_review"] - reviews_param = None + reviews_param: Optional[ReviewPagination] = None metadata_str = "" review_items = review_service.get_before_reviews_by_user_id( @@ -214,7 +216,7 @@ def review_move_to_back_action( reviews = review_items["items"] reviews = _make_review_contents_list_comment_short(reviews) - reviews_param: ReviewPagination = { + reviews_param = { "reviews": review_items["items"], "show_move_to_back": not review_items["is_move_to_first"], "show_move_to_next": True, @@ -356,6 +358,10 @@ def handle_submission( ) if notify: + if not review: + # TODO: エラーログ出力 + return + user = user_service.get_user(review["user_id"]) review["user_name"] = ( _make_detailed_user_name(user) if user else review["user_id"]