admin.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. from django.contrib import admin
  2. from scrobbles.models import (
  3. AudioScrobblerTSVImport,
  4. ChartRecord,
  5. KoReaderImport,
  6. LastFmImport,
  7. RetroarchImport,
  8. Scrobble,
  9. ScrobbledPage,
  10. )
  11. from scrobbles.mixins import Genre
  12. class ScrobbleInline(admin.TabularInline):
  13. model = Scrobble
  14. extra = 0
  15. raw_id_fields = (
  16. "video",
  17. "podcast_episode",
  18. "track",
  19. "video_game",
  20. "book",
  21. "sport_event",
  22. "board_game",
  23. "geo_location",
  24. "webpage",
  25. "user",
  26. )
  27. exclude = ("source_id", "scrobble_log")
  28. class ImportBaseAdmin(admin.ModelAdmin):
  29. date_hierarchy = "created"
  30. list_display = (
  31. "uuid",
  32. "process_count",
  33. "processed_finished",
  34. "processing_started",
  35. )
  36. ordering = ("-created",)
  37. @admin.register(AudioScrobblerTSVImport)
  38. class AudioScrobblerTSVImportAdmin(ImportBaseAdmin):
  39. ...
  40. @admin.register(LastFmImport)
  41. class LastFmImportAdmin(ImportBaseAdmin):
  42. ...
  43. @admin.register(KoReaderImport)
  44. class KoReaderImportAdmin(ImportBaseAdmin):
  45. ...
  46. @admin.register(RetroarchImport)
  47. class RetroarchImportAdmin(ImportBaseAdmin):
  48. ...
  49. @admin.register(Genre)
  50. class GenreAdmin(admin.ModelAdmin):
  51. list_display = (
  52. "name",
  53. "source",
  54. )
  55. @admin.register(ChartRecord)
  56. class ChartRecordAdmin(admin.ModelAdmin):
  57. date_hierarchy = "created"
  58. list_display = (
  59. "user",
  60. "rank",
  61. "count",
  62. "year",
  63. "week",
  64. "month",
  65. "day",
  66. "media_name",
  67. )
  68. ordering = ("-created",)
  69. def media_name(self, obj):
  70. return obj.media_obj
  71. @admin.register(Scrobble)
  72. class ScrobbleAdmin(admin.ModelAdmin):
  73. date_hierarchy = "timestamp"
  74. list_display = (
  75. "timestamp",
  76. "media_name",
  77. "media_type",
  78. "playback_percent",
  79. "source",
  80. "in_progress",
  81. "is_paused",
  82. "played_to_completion",
  83. )
  84. raw_id_fields = (
  85. "video",
  86. "podcast_episode",
  87. "track",
  88. "sport_event",
  89. "book",
  90. "video_game",
  91. )
  92. list_filter = (
  93. "is_paused",
  94. "in_progress",
  95. "media_type",
  96. "long_play_complete",
  97. "source",
  98. )
  99. ordering = ("-timestamp",)
  100. def media_name(self, obj):
  101. return obj.media_obj
  102. def playback_percent(self, obj):
  103. return obj.percent_played
  104. @admin.register(ScrobbledPage)
  105. class ScrobbledPageAdmin(admin.ModelAdmin):
  106. list_display = (
  107. "number",
  108. "scrobble",
  109. "notes",
  110. )
  111. raw_id_fields = ("scrobble",)