Procházet zdrojové kódy

[notifications] Add click to finish

Colin Powell před 5 měsíci
rodič
revize
51c1acd677

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

@@ -67,6 +67,9 @@ class Beer(ScrobblableMixin):
     def get_absolute_url(self) -> str:
         return reverse("beers:beer_detail", kwargs={"slug": self.uuid})
 
+    def __str__(self):
+        return f"{self.title} by {self.producer}"
+
     @property
     def subtitle(self):
         return self.producer.name

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

@@ -150,9 +150,6 @@ class Book(LongPlayScrobblableMixin):
             url = self.cover_medium.url
         return url
 
-    def get_start_url(self):
-        return reverse("scrobbles:start", kwargs={"uuid": self.uuid})
-
     def get_absolute_url(self):
         return reverse("books:book_detail", kwargs={"slug": self.uuid})
 

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

@@ -38,9 +38,6 @@ class Mood(ScrobblableMixin):
     def get_absolute_url(self):
         return reverse("moods:mood-detail", kwargs={"slug": self.uuid})
 
-    def get_start_url(self):
-        return reverse("scrobbles:start", kwargs={"uuid": self.uuid})
-
     @property
     def subtitle(self) -> str:
         return ""

+ 6 - 1
vrobbler/apps/scrobbles/mixins.py

@@ -95,9 +95,14 @@ class ScrobblableMixin(TimeStampedModel):
         )
         return Scrobble.create_or_update(self, user_id, scrobble_data)
 
-    def get_start_url(self):
+    @property
+    def start_url(self):
         return reverse("scrobbles:start", kwargs={"uuid": self.uuid})
 
+    @property
+    def finish_url(self) -> str:
+        return reverse("scrobbles:finish", kwargs={"uuid": self.uuid})
+
     @property
     def strings(self) -> ScrobblableConstants:
         return ScrobblableConstants()

+ 1 - 0
vrobbler/apps/scrobbles/utils.py

@@ -309,5 +309,6 @@ def send_notifications_for_scrobble(scrobble_id):
                 "Title": scrobble.media_obj.strings.verb,
                 "Priority": scrobble.media_obj.strings.priority,
                 "Tags": scrobble.media_obj.strings.tags,
+                "Click": scrobble.finish_url,
             },
         )

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

@@ -169,9 +169,6 @@ class VideoGame(LongPlayScrobblableMixin):
         slug = self.title.lower().replace(" ", "-")
         return f"https://igdb.com/games/{slug}"
 
-    def get_start_url(self):
-        return reverse("scrobbles:start", kwargs={"uuid": self.uuid})
-
     @property
     def logdata_cls(self):
         return VideoGameLogData

+ 4 - 2
vrobbler/apps/videos/models.py

@@ -23,6 +23,7 @@ from videos.imdb import lookup_video_from_imdb
 logger = logging.getLogger(__name__)
 BNULL = {"blank": True, "null": True}
 
+
 class Channel(TimeStampedModel):
     uuid = models.UUIDField(default=uuid4, editable=False, **BNULL)
     name = models.CharField(max_length=255)
@@ -75,6 +76,7 @@ class Channel(TimeStampedModel):
         logger.warning("Not implemented yet")
         return
 
+
 class Series(TimeStampedModel):
     uuid = models.UUIDField(default=uuid4, editable=False, **BNULL)
     name = models.CharField(max_length=255)
@@ -223,9 +225,9 @@ class Video(ScrobblableMixin):
 
     def __str__(self):
         if self.video_type == self.VideoType.TV_EPISODE:
-            return f"{self.title} - {self.tv_series} - Season {self.season_number}, Episode {self.episode_number}"
+            return f"{self.title} / [S{self.season_number}E{self.episode_number}] {self.tv_series}"
         if self.video_type == self.VideoType.YOUTUBE:
-            return f"{self.title} - {self.channel}"
+            return f"{self.title} / {self.channel}"
         return self.title
 
     def get_absolute_url(self):

+ 1 - 1
vrobbler/templates/_scrobblable_list.html

@@ -14,7 +14,7 @@
             <td><a href="{{obj.get_absolute_url}}">{{obj}}</a></td>
             {% if request.user.is_authenticated %}
             <td>{{obj.scrobble_count}}</td>
-            <td><a type="button" class="btn btn-sm btn-primary" href="{{obj.get_start_url}}">Scrobble</a></td>
+            <td><a type="button" class="btn btn-sm btn-primary" href="{{obj.start_url}}">Scrobble</a></td>
             {% endif %}
         </tr>
         {% endfor %}

+ 1 - 1
vrobbler/templates/beers/beer_detail.html

@@ -41,7 +41,7 @@
 <div class="row">
     <p>{{object.scrobble_set.count}} scrobbles</p>
     <p>
-        <a href="{{object.get_start_url}}">Drink again</a>
+        <a href="{{object.start_url}}">Drink again</a>
     </p>
 </div>
 <div class="row">

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

@@ -44,7 +44,7 @@
 <div class="row">
     <p>{{object.scrobble_set.count}} scrobbles</p>
     <p>
-        <a href="{{object.get_start_url}}">Play again</a>
+        <a href="{{object.start_url}}">Play again</a>
     </p>
 </div>
 <div class="row">

+ 1 - 1
vrobbler/templates/scrobbles/_media_box.html

@@ -3,7 +3,7 @@
         <dt><a href="{{media.get_absolute_url}}">{{media.title}}</a></dt>
         <dd><a href="{{media.get_absolute_url}}"><img src="{{media.primary_image_url}}" style="width: 200px; height: 200px; object-fit:cover; " /></a></dd>
         <dd>
-            {% if media.is_long_play_in_progress %}Playing{% else %}<a type="button" class="btn btn-sm btn-primary" href="{{media.get_start_url}}">Resume</a>{% endif %}
+            {% if media.is_long_play_in_progress %}Playing{% else %}<a type="button" class="btn btn-sm btn-primary" href="{{media.start_url}}">Resume</a>{% endif %}
             <a type="button" class="right btn btn-sm " href="{{media.get_longplay_finish_url}}">Finish</a>
         </dd>
     </dl>

+ 2 - 2
vrobbler/templates/scrobbles/long_plays_in_progress.html

@@ -28,7 +28,7 @@
             <dd><a href="{{media.get_absolute_url}}"><img src="{{media.cover_medium.url}}" style="width: 200px; height: 200px; object-fit:cover; " /></a></dd>
             {% endif %}
             <dd>
-                {% if media.is_long_play_in_progress %}Playing{% else %}<a type="button" class="btn btn-sm btn-primary" href="{{media.get_start_url}}">Resume</a>{% endif %}
+                {% if media.is_long_play_in_progress %}Playing{% else %}<a type="button" class="btn btn-sm btn-primary" href="{{media.start_url}}">Resume</a>{% endif %}
                 <a type="button" class="right btn btn-sm " href="{{media.get_longplay_finish_url}}">Finish</a>
             </dd>
         </dl>
@@ -55,7 +55,7 @@
                         <td>{{media.scrobble_set.count}}</td>
                         <td><a href="{{media.get_absolute_url}}">{{media}}</a></td>
                         <td>{% if media.author %}{{media.author}}{% else %}{{media.platforms.first}}{% endif %}</td>
-                        <td><a type="button" class="btn btn-sm btn-primary" href="{{media.get_start_url}}">Resume</a></td>
+                        <td><a type="button" class="btn btn-sm btn-primary" href="{{media.start_url}}">Resume</a></td>
                         <td><a type="button" class="right btn btn-sm " href="{{media.get_longplay_finish_url}}">Finish</a></td>
                     </tr>
                     {% endfor %}

+ 1 - 1
vrobbler/templates/tasks/task_detail.html

@@ -41,7 +41,7 @@
 <div class="row">
     <p>{{object.scrobble_set.count}} scrobbles</p>
     <p>
-        <a href="{{object.get_start_url}}">Play again</a>
+        <a href="{{object.start_url}}">Play again</a>
     </p>
 </div>
 <div class="row">

+ 1 - 1
vrobbler/templates/trails/trail_detail.html

@@ -41,7 +41,7 @@
 <div class="row">
     <p>{{object.scrobble_set.count}} scrobbles</p>
     <p>
-        <a href="{{object.get_start_url}}">Play again</a>
+        <a href="{{object.start_url}}">Play again</a>
     </p>
 </div>
 <div class="row">

+ 1 - 1
vrobbler/templates/videogames/videogame_detail.html

@@ -67,7 +67,7 @@
         {% if object.scrobble_set.last.long_play_complete == True %}
         <a href="">Play again</a>
         {% else %}
-        <a href="{{object.get_start_url}}">Resume playing</a>
+        <a href="{{object.start_url}}">Resume playing</a>
         {% endif %}
     </p>
 </div>