瀏覽代碼

Fix display of life events

Colin Powell 11 月之前
父節點
當前提交
daea268465

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

@@ -13,6 +13,9 @@ class LifeEvent(ScrobblableMixin):
 
     description = models.TextField(**BNULL)
 
+    def __str__(self):
+        return self.title
+
     def get_absolute_url(self):
         return reverse(
             "life-events:life-event_detail", kwargs={"slug": self.uuid}

+ 7 - 5
vrobbler/apps/lifeevents/urls.py

@@ -1,14 +1,16 @@
 from django.urls import path
 from lifeevents import views
 
-app_name = "events"
+app_name = "lifeevents"
 
 
 urlpatterns = [
-    path("events/", views.EventListView.as_view(), name="event_list"),
     path(
-        "event/<slug:slug>/",
-        views.EventDetailView.as_view(),
-        name="event_detail",
+        "lifeevents/", views.LifeEventListView.as_view(), name="lifeevent_list"
+    ),
+    path(
+        "lifeevent/<slug:slug>/",
+        views.LifeEventDetailView.as_view(),
+        name="life-event_detail",
     ),
 ]

+ 2 - 2
vrobbler/apps/lifeevents/views.py

@@ -2,11 +2,11 @@ from django.views import generic
 from lifeevents.models import LifeEvent
 
 
-class EventListView(generic.ListView):
+class LifeEventListView(generic.ListView):
     model = LifeEvent
     paginate_by = 20
 
 
-class EventDetailView(generic.DetailView):
+class LifeEventDetailView(generic.DetailView):
     model = LifeEvent
     slug_field = "uuid"

+ 10 - 0
vrobbler/apps/scrobbles/dataclasses.py

@@ -4,6 +4,16 @@ from dataclasses import dataclass, asdict
 from typing import Optional
 
 
+class ScrobbleMetadataEncoder(json.JSONEncoder):
+    def default(self, o):
+        return o.__dict__
+
+
+class ScrobbleMetadataDecoder(json.JSONDecoder):
+    def default(self, o):
+        return o.__dict__
+
+
 class JSONMetadata(object):
     @property
     def asdict(self):

+ 9 - 1
vrobbler/apps/scrobbles/models.py

@@ -38,6 +38,10 @@ from sports.models import SportEvent
 from videogames import retroarch
 from videogames.models import VideoGame
 from videos.models import Series, Video
+from scrobbles.dataclasses import (
+    ScrobbleMetadataDecoder,
+    ScrobbleMetadataEncoder,
+)
 from webpages.models import WebPage
 from lifeevents.models import LifeEvent
 
@@ -526,7 +530,11 @@ class Scrobble(TimeStampedModel):
 
     # Metadata
     source = models.CharField(max_length=255, **BNULL)
-    log = models.JSONField(**BNULL)
+    log = models.JSONField(
+        **BNULL,
+        encoder=ScrobbleMetadataEncoder,
+        decoder=ScrobbleMetadataDecoder,
+    )
     timezone = models.CharField(max_length=50, **BNULL)
 
     # Fields for keeping track of book data