review widget on user home page

This commit is contained in:
Your Name 2021-12-16 22:38:34 -05:00
parent 3bdbd6ea65
commit a00e6622db
2 changed files with 152 additions and 1 deletions

View file

@ -122,6 +122,35 @@
</ul>
</div>
<div class="entity-sort" id="bookReviewed">
<h5 class="entity-sort__label">
{% trans '评论过的书籍' %}
</h5>
<span class="entity-sort__count">
{{ book_reviews_count }}
</span>
{% if book_reviews_more %}
<a href="{% url 'users:book_list' user.mastodon_username 'reviewed' %}"
class="entity-sort__more-link">{% trans '更多' %}</a>
{% endif %}
<ul class="entity-sort__entity-list">
{% for book_review in book_reviews %}
<li class="entity-sort__entity">
<a href="{% url 'books:retrieve' book_review.book.id %}">
<img src="{{ book_review.book.cover|thumb:'normal' }}"
alt="{{book_review.book.title}}" class="entity-sort__entity-img">
<span class="entity-sort__entity-name"
title="{{book_review.book.title}}">{{ book_review.book.title }}</span>
</a>
</li>
{% empty %}
<div>暂无记录</div>
{% endfor %}
</ul>
</div>
<div class="entity-sort" id="movieWish">
<h5 class="entity-sort__label">
{% trans '想看的电影/剧集' %}
@ -209,6 +238,35 @@
</ul>
</div>
<div class="entity-sort" id="movieReviewed">
<h5 class="entity-sort__label">
{% trans '评论过的电影/剧集' %}
</h5>
<span class="entity-sort__count">
{{ movie_reviews_count }}
</span>
{% if movie_reviews_more %}
<a href="{% url 'users:movie_list' user.mastodon_username 'reviewed' %}"
class="entity-sort__more-link">{% trans '更多' %}</a>
{% endif %}
<ul class="entity-sort__entity-list">
{% for movie_review in movie_reviews %}
<li class="entity-sort__entity">
<a href="{% url 'movies:retrieve' movie_review.movie.id %}">
<img src="{{ movie_review.movie.cover|thumb:'normal' }}"
alt="{{movie_review.movie.title}}" class="entity-sort__entity-img">
<span class="entity-sort__entity-name"
title="{{movie_review.movie.title}}">{{ movie_review.movie.title }}</span>
</a>
</li>
{% empty %}
<div>暂无记录</div>
{% endfor %}
</ul>
</div>
<div class="entity-sort" id="musicWish">
<h5 class="entity-sort__label">
{% trans '想听的音乐' %}
@ -324,6 +382,43 @@
</ul>
</div>
<div class="entity-sort" id="musicReviewed">
<h5 class="entity-sort__label">
{% trans '评论过的音乐' %}
</h5>
<span class="entity-sort__count">
{{ music_reviews_count }}
</span>
{% if music_reviews_more %}
<a href="{% url 'users:music_list' user.mastodon_username 'reviewed' %}"
class="entity-sort__more-link">{% trans '更多' %}</a>
{% endif %}
<ul class="entity-sort__entity-list">
{% for music_review in music_reviews %}
<li class="entity-sort__entity">
{% if music_review.type == 'album' %}
<a href="{% url 'music:retrieve_album' music_review.album.id %}">
<img src="{{ music_review.album.cover|thumb:'normal' }}"
alt="{{music_review.album.title}}" class="entity-sort__entity-img">
<span class="entity-sort__entity-name"
title="{{music_review.album.title}}">{{ music_review.album.title }}</span>
</a>
{% else %}
<a href="{% url 'music:retrieve_song' music_review.song.id %}">
<img src="{{ music_review.song.cover|thumb:'normal' }}"
alt="{{music_review.song.title}}" class="entity-sort__entity-img">
<span class="entity-sort__entity-name"
title="{{music_review.song.title}}">{{ music_review.song.title }}</span>
</a>
{% endif %}
</li>
{% empty %}
<div>暂无记录</div>
{% endfor %}
</ul>
</div>
<div class="entity-sort" id="gameWish">
<h5 class="entity-sort__label">
{% trans '想玩的游戏' %}
@ -407,6 +502,35 @@
</ul>
</div>
<div class="entity-sort" id="gameReviewed">
<h5 class="entity-sort__label">
{% trans '评论过的游戏' %}
</h5>
<span class="entity-sort__count">
{{ game_reviews_count }}
</span>
{% if game_reviews_more %}
<a href="{% url 'users:game_list' user.mastodon_username 'reviewed' %}"
class="entity-sort__more-link">{% trans '更多' %}</a>
{% endif %}
<ul class="entity-sort__entity-list">
{% for game_review in game_reviews %}
<li class="entity-sort__entity">
<a href="{% url 'games:retrieve' game_review.game.id %}">
<img src="{{ game_review.game.cover|thumb:'normal' }}"
alt="{{game_review.game.title}}" class="entity-sort__entity-img">
<span class="entity-sort__entity-name"
title="{{game_review.game.title}}">{{ game_review.game.title }}</span>
</a>
</li>
{% empty %}
<div>暂无记录</div>
{% endfor %}
</ul>
</div>
</div>
{% if user == request.user %}

View file

@ -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,