Fix display of life events

This commit is contained in:
2024-05-23 00:26:56 -04:00
parent 1cceb2bd63
commit daea268465
5 changed files with 31 additions and 8 deletions

View File

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

View File

@ -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",
),
]

View File

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

View File

@ -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):

View File

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