spradio-server-django/savepointradio/radio/admin.py
2017-12-29 09:56:47 -05:00

203 lines
6 KiB
Python

from django.contrib import admin
from django.db import models
from django.forms import TextInput
from django.utils import timezone
from .models import Album, Artist, Game, Song
class ArtistInline(admin.TabularInline):
model = Song.artists.through
verbose_name = 'artist'
verbose_name_plural = 'artists'
extra = 0
@admin.register(Album)
class AlbumAdmin(admin.ModelAdmin):
# Detail List display
list_display = ('title', 'is_enabled', 'is_published')
search_fields = ['title']
actions = ['publish_items']
# Edit Form display
readonly_fields = ('created_date', 'modified_date')
fieldsets = (
('Album Disabling', {
'classes': ('collapse',),
'fields': ('disabled', 'disabled_date', 'disabled_reason')
}),
('Main', {
'fields': ('title', 'published_date')
}),
('Stats', {
'classes': ('collapse',),
'fields': ('created_date', 'modified_date')
})
)
def is_enabled(self, obj):
return not obj.disabled
def is_published(self, obj):
return obj.is_published
def publish_items(self, request, queryset):
rows_updated = queryset.update(published_date=timezone.now())
if rows_updated == 1:
msg = '1 album was'
else:
msg = '{} albums were'.format(str(rows_updated))
self.message_user(request, '{} successfully published.'.format(msg))
publish_items.short_description = "Publish selected items"
@admin.register(Artist)
class ArtistAdmin(admin.ModelAdmin):
# Detail List display
list_display = ('first_name',
'alias',
'last_name',
'is_enabled',
'is_published')
search_fields = ['first_name', 'alias', 'last_name']
actions = ['publish_items']
# Edit Form display
readonly_fields = ('created_date', 'modified_date')
fieldsets = (
('Artist Disabling', {
'classes': ('collapse',),
'fields': ('disabled', 'disabled_date', 'disabled_reason')
}),
('Main', {
'fields': ('first_name', 'alias', 'last_name', 'published_date')
}),
('Stats', {
'classes': ('collapse',),
'fields': ('created_date', 'modified_date')
})
)
def is_enabled(self, obj):
return not obj.disabled
def is_published(self, obj):
return obj.is_published
def publish_items(self, request, queryset):
rows_updated = queryset.update(published_date=timezone.now())
if rows_updated == 1:
msg = '1 artist was'
else:
msg = '{} artists were'.format(str(rows_updated))
self.message_user(request, '{} successfully published.'.format(msg))
publish_items.short_description = "Publish selected items"
@admin.register(Game)
class GameAdmin(admin.ModelAdmin):
# Detail List display
list_display = ('title', 'is_enabled', 'is_published')
search_fields = ['title']
actions = ['publish_items']
# Edit Form display
readonly_fields = ('created_date', 'modified_date')
fieldsets = (
('Game Disabling', {
'classes': ('collapse',),
'fields': ('disabled', 'disabled_date', 'disabled_reason')
}),
('Main', {
'fields': ('title', 'published_date')
}),
('Stats', {
'classes': ('collapse',),
'fields': ('created_date', 'modified_date')
})
)
def is_enabled(self, obj):
return not obj.disabled
def is_published(self, obj):
return obj.is_published
def publish_items(self, request, queryset):
rows_updated = queryset.update(published_date=timezone.now())
if rows_updated == 1:
msg = '1 game was'
else:
msg = '{} games were'.format(str(rows_updated))
self.message_user(request, '{} successfully published.'.format(msg))
publish_items.short_description = "Publish selected items"
@admin.register(Song)
class SongAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': TextInput(attrs={'size': 160, })},
}
# Detail List display
list_display = ('title',
'game',
'artist_list',
'is_enabled',
'is_published')
search_fields = ['title']
actions = ['publish_items']
# Edit Form display
exclude = ('artists',)
readonly_fields = ('length',
'last_played',
'num_played',
'created_date',
'modified_date')
fieldsets = (
('Song Disabling', {
'classes': ('collapse',),
'fields': ('disabled', 'disabled_date', 'disabled_reason')
}),
('Main', {
'fields': ('song_type',
'title',
'path',
'published_date')
}),
('Stats', {
'classes': ('collapse',),
'fields': ('created_date',
'modified_date',
'last_played',
'num_played',
'length')
}),
('Album', {
'fields': ('album',)
}),
('Game', {
'fields': ('game',)
})
)
inlines = [ArtistInline]
def artist_list(self, obj):
return ', '.join([a.full_name for a in obj.artists.all()])
def is_enabled(self, obj):
return not obj.disabled
def is_published(self, obj):
return obj.is_published
def publish_items(self, request, queryset):
rows_updated = queryset.update(published_date=timezone.now())
if rows_updated == 1:
msg = '1 song was'
else:
msg = '{} songs were'.format(str(rows_updated))
self.message_user(request, '{} successfully published.'.format(msg))
publish_items.short_description = "Publish selected items"