58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
from django.contrib import admin
|
|
|
|
from taggit_helpers.admin import TaggitListFilter, TaggitTabularInline
|
|
|
|
from roms.models import Rom, RomFile
|
|
from roms.forms import RomFileForm, RomFileInlineFormSet
|
|
from gulashromstore.settings import SLOT_COUNT
|
|
|
|
|
|
class RomFileInline(admin.TabularInline):
|
|
model = RomFile
|
|
form = RomFileForm
|
|
formset = RomFileInlineFormSet
|
|
|
|
fields = ('slot', 'binary')
|
|
|
|
can_delete = False
|
|
max_num = SLOT_COUNT
|
|
min_num = SLOT_COUNT
|
|
|
|
|
|
class RomAdmin(admin.ModelAdmin):
|
|
list_display = ('name', 'approved', 'tag_list')
|
|
list_filter = [TaggitListFilter]
|
|
actions = ['mark_approved', 'mark_disapproved']
|
|
|
|
fieldsets = ((None, {'fields' : ('name', 'description', 'cover', 'approved')}),)
|
|
|
|
inlines = [
|
|
RomFileInline,
|
|
TaggitTabularInline
|
|
]
|
|
|
|
|
|
def tag_list(self, obj):
|
|
return u", ".join(obj.tag_list())
|
|
|
|
def mark_approved(self, request, queryset):
|
|
rows_updated = queryset.update(approved=True)
|
|
if rows_updated == 1:
|
|
message_bit = "One rom was"
|
|
else:
|
|
message_bit = "%d roms were" % rows_updated
|
|
self.message_user(request, "%s successfully marked as approved." % message_bit)
|
|
mark_approved.short_description = "Mark selected roms as approved"
|
|
|
|
def mark_disapproved(self, request, queryset):
|
|
rows_updated = queryset.update(approved=False)
|
|
if rows_updated == 1:
|
|
message_bit = "One rom was"
|
|
else:
|
|
message_bit = "%d roms were" % rows_updated
|
|
self.message_user(request, "%s successfully marked as disapproved." % message_bit)
|
|
mark_disapproved.short_description = "Mark selected roms as disapproved"
|
|
|
|
|
|
admin.site.register(Rom, RomAdmin)
|