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)