From e13ac323701a0ee7932419cd9b40afcb17124752 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Tue, 27 Feb 2018 23:01:55 +0100
Subject: [PATCH] Fixed #80: Added admin interface for radios, track files,
 favorites...

---
 api/funkwhale_api/favorites/admin.py | 12 +++++++
 api/funkwhale_api/history/admin.py   |  4 +++
 api/funkwhale_api/music/admin.py     | 35 ++++++++++++++++++--
 api/funkwhale_api/radios/admin.py    | 48 ++++++++++++++++++++++++++++
 api/funkwhale_api/requests/admin.py  | 16 ++++++++++
 changes/changelog.d/80.feature       |  1 +
 6 files changed, 113 insertions(+), 3 deletions(-)
 create mode 100644 api/funkwhale_api/favorites/admin.py
 create mode 100644 api/funkwhale_api/radios/admin.py
 create mode 100644 api/funkwhale_api/requests/admin.py
 create mode 100644 changes/changelog.d/80.feature

diff --git a/api/funkwhale_api/favorites/admin.py b/api/funkwhale_api/favorites/admin.py
new file mode 100644
index 00000000..e8f29fac
--- /dev/null
+++ b/api/funkwhale_api/favorites/admin.py
@@ -0,0 +1,12 @@
+from django.contrib import admin
+
+from . import models
+
+
+@admin.register(models.TrackFavorite)
+class TrackFavoriteAdmin(admin.ModelAdmin):
+    list_display = ['user', 'track', 'creation_date']
+    list_select_related = [
+        'user',
+        'track'
+    ]
diff --git a/api/funkwhale_api/history/admin.py b/api/funkwhale_api/history/admin.py
index f8f587a0..6d0480e7 100644
--- a/api/funkwhale_api/history/admin.py
+++ b/api/funkwhale_api/history/admin.py
@@ -6,3 +6,7 @@ from . import models
 class ListeningAdmin(admin.ModelAdmin):
     list_display = ['track', 'end_date', 'user', 'session_key']
     search_fields = ['track__name', 'user__username']
+    list_select_related = [
+        'user',
+        'track'
+    ]
diff --git a/api/funkwhale_api/music/admin.py b/api/funkwhale_api/music/admin.py
index 524b8538..219b40a9 100644
--- a/api/funkwhale_api/music/admin.py
+++ b/api/funkwhale_api/music/admin.py
@@ -25,13 +25,26 @@ class TrackAdmin(admin.ModelAdmin):
 
 @admin.register(models.ImportBatch)
 class ImportBatchAdmin(admin.ModelAdmin):
-    list_display = ['creation_date', 'status']
-
+    list_display = [
+        'submitted_by',
+        'creation_date',
+        'import_request',
+        'status']
+    list_select_related = [
+        'submitted_by',
+        'import_request',
+    ]
+    list_filter = ['status']
+    search_fields = [
+        'import_request__name', 'source', 'batch__pk', 'mbid']
 
 @admin.register(models.ImportJob)
 class ImportJobAdmin(admin.ModelAdmin):
     list_display = ['source', 'batch', 'track_file', 'status', 'mbid']
-    list_select_related = True
+    list_select_related = [
+        'track_file',
+        'batch',
+    ]
     search_fields = ['source', 'batch__pk', 'mbid']
     list_filter = ['status']
 
@@ -50,3 +63,19 @@ class LyricsAdmin(admin.ModelAdmin):
     list_select_related = True
     search_fields = ['url', 'work__title']
     list_filter = ['work__language']
+
+
+@admin.register(models.TrackFile)
+class TrackFileAdmin(admin.ModelAdmin):
+    list_display = [
+        'track',
+        'audio_file',
+        'source',
+        'duration',
+        'mimetype',
+    ]
+    list_select_related = [
+        'track'
+    ]
+    search_fields = ['source', 'acoustid_track_id']
+    list_filter = ['mimetype']
diff --git a/api/funkwhale_api/radios/admin.py b/api/funkwhale_api/radios/admin.py
new file mode 100644
index 00000000..6d5abada
--- /dev/null
+++ b/api/funkwhale_api/radios/admin.py
@@ -0,0 +1,48 @@
+from django.contrib import admin
+
+from . import models
+
+
+@admin.register(models.Radio)
+class RadioAdmin(admin.ModelAdmin):
+    list_display = [
+        'user', 'name', 'is_public', 'creation_date', 'config']
+    list_select_related = [
+        'user',
+    ]
+    list_filter = [
+        'is_public',
+    ]
+    search_fields = ['name', 'description']
+
+
+@admin.register(models.RadioSession)
+class RadioSessionAdmin(admin.ModelAdmin):
+    list_display = [
+        'user',
+        'custom_radio',
+        'radio_type',
+        'creation_date',
+        'related_object']
+
+    list_select_related = [
+        'user',
+        'custom_radio'
+    ]
+    list_filter = [
+        'radio_type',
+    ]
+
+
+@admin.register(models.RadioSessionTrack)
+class RadioSessionTrackAdmin(admin.ModelAdmin):
+    list_display = [
+        'id',
+        'session',
+        'position',
+        'track',]
+
+    list_select_related = [
+        'track',
+        'session'
+    ]
diff --git a/api/funkwhale_api/requests/admin.py b/api/funkwhale_api/requests/admin.py
new file mode 100644
index 00000000..71933eaa
--- /dev/null
+++ b/api/funkwhale_api/requests/admin.py
@@ -0,0 +1,16 @@
+from django.contrib import admin
+
+from . import models
+
+
+@admin.register(models.ImportRequest)
+class ImportRequestAdmin(admin.ModelAdmin):
+    list_display = ['artist_name', 'user', 'status', 'creation_date']
+    list_select_related = [
+        'user',
+        'track'
+    ]
+    list_filter = [
+        'status',
+    ]
+    search_fields = ['artist_name', 'comment', 'albums']
diff --git a/changes/changelog.d/80.feature b/changes/changelog.d/80.feature
new file mode 100644
index 00000000..16591a91
--- /dev/null
+++ b/changes/changelog.d/80.feature
@@ -0,0 +1 @@
+Added admin interface for radios, track files, favorites and import requests (#80)
-- 
GitLab