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) description = models.TextField(**BNULL)
def __str__(self):
return self.title
def get_absolute_url(self): def get_absolute_url(self):
return reverse( return reverse(
"life-events:life-event_detail", kwargs={"slug": self.uuid} "life-events:life-event_detail", kwargs={"slug": self.uuid}

View File

@ -1,14 +1,16 @@
from django.urls import path from django.urls import path
from lifeevents import views from lifeevents import views
app_name = "events" app_name = "lifeevents"
urlpatterns = [ urlpatterns = [
path("events/", views.EventListView.as_view(), name="event_list"),
path( path(
"event/<slug:slug>/", "lifeevents/", views.LifeEventListView.as_view(), name="lifeevent_list"
views.EventDetailView.as_view(), ),
name="event_detail", 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 from lifeevents.models import LifeEvent
class EventListView(generic.ListView): class LifeEventListView(generic.ListView):
model = LifeEvent model = LifeEvent
paginate_by = 20 paginate_by = 20
class EventDetailView(generic.DetailView): class LifeEventDetailView(generic.DetailView):
model = LifeEvent model = LifeEvent
slug_field = "uuid" slug_field = "uuid"

View File

@ -4,6 +4,16 @@ from dataclasses import dataclass, asdict
from typing import Optional 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): class JSONMetadata(object):
@property @property
def asdict(self): def asdict(self):

View File

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