diff --git a/PROJECT.org b/PROJECT.org
index a27fa13..39119d0 100644
--- a/PROJECT.org
+++ b/PROJECT.org
@@ -92,7 +92,7 @@ fetching and simple saving.
:LOGBOOK:
CLOCK: [2025-07-09 Wed 09:55]--[2025-07-09 Wed 10:15] => 0:20
:END:
-* Backlog [6/30]
+* Backlog [8/32]
** TODO [#C] Create small utility to clean up tracks scrobbled with wonky playback times :vrobbler:personal:bug:music:scrobbles:
** TODO [#C] Move to using more robust mopidy-webhooks pacakge form pypi :utility:improvement:
:PROPERTIES:
@@ -460,6 +460,14 @@ Turns out we're not looking up music tracks properly, again.
:END:
** TODO Add sentiment parsing for Scrobbles with notes :vrobbler:project:scrobbles:sentiment:
** TODO Check opencode about a way to present stats like movies per month :vrobbler:scrobbles:stats:personal:project:
+** DONE Update admin page to be easier to use :vrobbler:djadmin:project:personal:
+:PROPERTIES:
+:ID: 0779be1f-1ad7-ddc7-8861-d3c7c833cbe9
+:END:
+** DONE Fix migrations and update repo :vrobbler:scrobbles:admin:personal:project:
+:PROPERTIES:
+:ID: ccbc2ef0-68bf-9ef7-dcaf-febab5ebefe2
+:END:
** DONE Add recipe parsing for food lookups :vrobbler:foods:project:feature:personal:
:PROPERTIES:
:ID: 86456c78-247b-fb63-7ae8-d6d17e7666b1
diff --git a/vrobbler/apps/scrobbles/admin.py b/vrobbler/apps/scrobbles/admin.py
index db22c1a..6f1244b 100644
--- a/vrobbler/apps/scrobbles/admin.py
+++ b/vrobbler/apps/scrobbles/admin.py
@@ -54,23 +54,19 @@ class ImportBaseAdmin(admin.ModelAdmin):
@admin.register(AudioScrobblerTSVImport)
-class AudioScrobblerTSVImportAdmin(ImportBaseAdmin):
- ...
+class AudioScrobblerTSVImportAdmin(ImportBaseAdmin): ...
@admin.register(LastFmImport)
-class LastFmImportAdmin(ImportBaseAdmin):
- ...
+class LastFmImportAdmin(ImportBaseAdmin): ...
@admin.register(KoReaderImport)
-class KoReaderImportAdmin(ImportBaseAdmin):
- ...
+class KoReaderImportAdmin(ImportBaseAdmin): ...
@admin.register(RetroarchImport)
-class RetroarchImportAdmin(ImportBaseAdmin):
- ...
+class RetroarchImportAdmin(ImportBaseAdmin): ...
@admin.register(Genre)
diff --git a/vrobbler/apps/scrobbles/apps.py b/vrobbler/apps/scrobbles/apps.py
index 3396fa8..0e43f5a 100644
--- a/vrobbler/apps/scrobbles/apps.py
+++ b/vrobbler/apps/scrobbles/apps.py
@@ -1,5 +1,20 @@
from django.apps import AppConfig
+from django.contrib import admin
class ScrobblesConfig(AppConfig):
name = "scrobbles"
+
+ def ready(self):
+ from scrobbles.models import Scrobble
+
+ original_index = admin.site.index
+
+ def custom_index(request, extra_context=None):
+ extra_context = extra_context or {}
+ extra_context["recent_scrobbles"] = Scrobble.objects.filter(
+ timestamp__isnull=False
+ ).order_by("-timestamp")[:20]
+ return original_index(request, extra_context)
+
+ admin.site.index = custom_index
diff --git a/vrobbler/templates/admin/index.html b/vrobbler/templates/admin/index.html
new file mode 100644
index 0000000..f146606
--- /dev/null
+++ b/vrobbler/templates/admin/index.html
@@ -0,0 +1,78 @@
+{% extends "admin/base_site.html" %}
+{% load i18n static %}
+
+{% block extrastyle %}{{ block.super }}{% endblock %}
+
+{% block coltype %}colMS{% endblock %}
+
+{% block bodyclass %}{{ block.super }} dashboard{% endblock %}
+
+{% block nav-breadcrumbs %}{% endblock %}
+
+{% block nav-sidebar %}{% endblock %}
+
+{% block content %}
+
+ {% if recent_scrobbles %}
+
+
+
+ Recent Scrobbles
+
+
+
+ | Timestamp |
+ Media |
+ Type |
+ User |
+
+
+
+ {% for scrobble in recent_scrobbles %}
+
+ | {{ scrobble.timestamp|date:"Y-m-d H:i" }} |
+ {{ scrobble.media_obj|truncatechars:50 }} |
+ {{ scrobble.get_media_type_display }} |
+ {{ scrobble.user|default:"-" }} |
+
+ {% endfor %}
+
+
+
+ {% endif %}
+
+ {% include "admin/app_list.html" with app_list=app_list show_changelinks=True %}
+
+{% endblock %}
+
+{% block sidebar %}
+