Allow playing board games again

This commit is contained in:
2023-11-27 20:46:48 +01:00
parent 7564292f5b
commit dea34c926b
4 changed files with 20 additions and 15 deletions

View File

@ -82,6 +82,9 @@ class BoardGame(ScrobblableMixin):
link = f"https://boardgamegeek.com/boardgame/{self.bggeek_id}" link = f"https://boardgamegeek.com/boardgame/{self.bggeek_id}"
return link return link
def get_start_url(self):
return reverse("scrobbles:start", kwargs={"uuid": self.uuid})
def fix_metadata(self, data: dict = {}, force_update=False) -> None: def fix_metadata(self, data: dict = {}, force_update=False) -> None:
if not self.published_date or force_update: if not self.published_date or force_update:

View File

@ -8,9 +8,14 @@ LONG_PLAY_MEDIA = {
"books": "Book", "books": "Book",
} }
EXCLUDE_FROM_NOW_PLAYING = ( PLAY_AGAIN_MEDIA = {
"GeoLocation", "videogames": "VideoGame",
) "books": "Book",
"boardgames": "BoardGame",
}
EXCLUDE_FROM_NOW_PLAYING = ("GeoLocation",)
MANUAL_SCROBBLE_FNS = { MANUAL_SCROBBLE_FNS = {
"-v": "manual_scrobble_video_game", "-v": "manual_scrobble_video_game",

View File

@ -50,8 +50,6 @@ from scrobbles.scrobblers import (
jellyfin_scrobble_video, jellyfin_scrobble_video,
manual_scrobble_board_game, manual_scrobble_board_game,
manual_scrobble_book, manual_scrobble_book,
manual_scrobble_event,
manual_scrobble_video,
manual_scrobble_video_game, manual_scrobble_video_game,
mopidy_scrobble_podcast, mopidy_scrobble_podcast,
mopidy_scrobble_track, mopidy_scrobble_track,
@ -424,7 +422,7 @@ def scrobble_start(request, uuid):
return HttpResponseRedirect(success_url) return HttpResponseRedirect(success_url)
media_obj = None media_obj = None
for app, model in LONG_PLAY_MEDIA.items(): for app, model in PLAY_AGAIN_MEDIA.items():
media_model = apps.get_model(app_label=app, model_name=model) media_model = apps.get_model(app_label=app, model_name=model)
media_obj = media_model.objects.filter(uuid=uuid).first() media_obj = media_model.objects.filter(uuid=uuid).first()
if media_obj: if media_obj:
@ -435,10 +433,13 @@ def scrobble_start(request, uuid):
scrobble = None scrobble = None
user_id = request.user.id user_id = request.user.id
if media_obj and media_obj.__class__.__name__ == "Book": if media_obj:
scrobble = manual_scrobble_book(media_obj.openlibrary_id, user_id) if media_obj.__class__.__name__ == Scrobble.MediaType.BOOK:
if media_obj and media_obj.__class__.__name__ == "VideoGame": scrobble = manual_scrobble_book(media_obj.openlibrary_id, user_id)
scrobble = manual_scrobble_video_game(media_obj.hltb_id, user_id) if media_obj.__class__.__name__ == Scrobble.MediaType.VIDEO_GAME:
scrobble = manual_scrobble_video_game(media_obj.hltb_id, user_id)
if media_obj.__class__.__name__ == Scrobble.MediaType.BOARD_GAME:
scrobble = manual_scrobble_board_game(media_obj.hltb_id, user_id)
if scrobble: if scrobble:
messages.add_message( messages.add_message(

View File

@ -44,11 +44,7 @@
<div class="row"> <div class="row">
<p>{{object.scrobble_set.count}} scrobbles</p> <p>{{object.scrobble_set.count}} scrobbles</p>
<p> <p>
{% if object.scrobble_set.last.long_play_complete == True %} <a href="{{object.get_start_url}}">Play again</a>
<a href="">Play again</a>
{% else %}
<a href="{{object.get_start_url}}">Resume playing</a>
{% endif %}
</p> </p>
</div> </div>
<div class="row"> <div class="row">