浏览代码

Allow playing board games again

Colin Powell 1 年之前
父节点
当前提交
dea34c926b

+ 3 - 0
vrobbler/apps/boardgames/models.py

@@ -82,6 +82,9 @@ class BoardGame(ScrobblableMixin):
             link = f"https://boardgamegeek.com/boardgame/{self.bggeek_id}"
         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:
 
         if not self.published_date or force_update:

+ 8 - 3
vrobbler/apps/scrobbles/constants.py

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

+ 8 - 7
vrobbler/apps/scrobbles/views.py

@@ -50,8 +50,6 @@ from scrobbles.scrobblers import (
     jellyfin_scrobble_video,
     manual_scrobble_board_game,
     manual_scrobble_book,
-    manual_scrobble_event,
-    manual_scrobble_video,
     manual_scrobble_video_game,
     mopidy_scrobble_podcast,
     mopidy_scrobble_track,
@@ -424,7 +422,7 @@ def scrobble_start(request, uuid):
         return HttpResponseRedirect(success_url)
 
     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_obj = media_model.objects.filter(uuid=uuid).first()
         if media_obj:
@@ -435,10 +433,13 @@ def scrobble_start(request, uuid):
 
     scrobble = None
     user_id = request.user.id
-    if media_obj and media_obj.__class__.__name__ == "Book":
-        scrobble = manual_scrobble_book(media_obj.openlibrary_id, user_id)
-    if media_obj and media_obj.__class__.__name__ == "VideoGame":
-        scrobble = manual_scrobble_video_game(media_obj.hltb_id, user_id)
+    if media_obj:
+        if media_obj.__class__.__name__ == Scrobble.MediaType.BOOK:
+            scrobble = manual_scrobble_book(media_obj.openlibrary_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:
         messages.add_message(

+ 1 - 5
vrobbler/templates/boardgames/boardgame_detail.html

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