From a00e6622dbabaf0674456955acfb1d6885b54acf Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 16 Dec 2021 22:38:34 -0500 Subject: [PATCH] review widget on user home page --- users/templates/users/home.html | 124 ++++++++++++++++++++++++++++++++ users/views.py | 29 +++++++- 2 files changed, 152 insertions(+), 1 deletion(-) diff --git a/users/templates/users/home.html b/users/templates/users/home.html index 0fe12af8..0f5e9eb2 100644 --- a/users/templates/users/home.html +++ b/users/templates/users/home.html @@ -122,6 +122,35 @@ +
+
+ {% trans '评论过的书籍' %} +
+ + {{ book_reviews_count }} + + {% if book_reviews_more %} + {% trans '更多' %} + {% endif %} + + +
+
{% trans '想看的电影/剧集' %} @@ -209,6 +238,35 @@
+
+
+ {% trans '评论过的电影/剧集' %} +
+ + {{ movie_reviews_count }} + + {% if movie_reviews_more %} + {% trans '更多' %} + {% endif %} + + +
+
{% trans '想听的音乐' %} @@ -324,6 +382,43 @@
+
+
+ {% trans '评论过的音乐' %} +
+ + {{ music_reviews_count }} + + {% if music_reviews_more %} + {% trans '更多' %} + {% endif %} + + +
+
{% trans '想玩的游戏' %} @@ -407,6 +502,35 @@
+
+
+ {% trans '评论过的游戏' %} +
+ + {{ game_reviews_count }} + + {% if game_reviews_more %} + {% trans '更多' %} + {% endif %} + + +
+ {% if user == request.user %} diff --git a/users/views.py b/users/views.py index 5c9ea909..5475bf06 100644 --- a/users/views.py +++ b/users/views.py @@ -249,6 +249,11 @@ def home(request, id): album_marks = request.user.user_albummarks.all() song_marks = request.user.user_songmarks.all() game_marks = request.user.user_gamemarks.all() + book_reviews = request.user.user_bookreviews.all() + movie_reviews = request.user.user_moviereviews.all() + album_reviews = request.user.user_albumreviews.all() + song_reviews = request.user.user_songreviews.all() + game_reviews = request.user.user_gamereviews.all() latest_task = user.user_synctasks.order_by("-id").first() @@ -279,6 +284,11 @@ def home(request, id): song_marks = SongMark.get_available_by_user(user, relation['following']) album_marks = AlbumMark.get_available_by_user(user, relation['following']) game_marks = GameMark.get_available_by_user(user, relation['following']) + book_reviews = BookMark.get_available_by_user(user, relation['following']) + movie_reviews = MovieMark.get_available_by_user(user, relation['following']) + song_reviews = SongMark.get_available_by_user(user, relation['following']) + album_reviews = AlbumMark.get_available_by_user(user, relation['following']) + game_reviews = GameMark.get_available_by_user(user, relation['following']) # book marks @@ -297,7 +307,6 @@ def home(request, id): filtered_music_marks = filter_marks([song_marks, album_marks], MUSIC_PER_SET, 'music') music_marks_count = count_marks([song_marks, album_marks], "music") - for mark in filtered_music_marks["do_music_marks"] +\ filtered_music_marks["wish_music_marks"] +\ filtered_music_marks["collect_music_marks"]: @@ -307,6 +316,10 @@ def home(request, id): else: mark.type = "song" + music_reviews = list(album_reviews.order_by("-edited_time")) + list(song_reviews.order_by("-edited_time")) + for review in music_reviews: + review.type = 'album' if review.__class__ == AlbumReview else 'song' + try: layout = user.preference.get_serialized_home_layout() except ObjectDoesNotExist: @@ -326,6 +339,20 @@ def home(request, id): **movie_marks_count, **music_marks_count, **game_marks_count, + + 'book_reviews': book_reviews.order_by("-edited_time")[:BOOKS_PER_SET], + 'movie_reviews': movie_reviews.order_by("-edited_time")[:MOVIES_PER_SET], + 'music_reviews': music_reviews[:MUSIC_PER_SET], + 'game_reviews': game_reviews[:GAMES_PER_SET], + 'book_reviews_more': book_reviews.count() > BOOKS_PER_SET, + 'movie_reviews_more': movie_reviews.count() > MOVIES_PER_SET, + 'music_reviews_more': len(music_reviews) > MUSIC_PER_SET, + 'game_reviews_more': game_reviews.count() > GAMES_PER_SET, + 'book_reviews_count': book_reviews.count(), + 'movie_reviews_count': movie_reviews.count(), + 'music_reviews_count': len(music_reviews), + 'game_reviews_count': game_reviews.count(), + 'layout': layout, 'reports': reports, 'unread_announcements': unread_announcements,