gremmie@1: """ gremmie@1: This file contains the automatic admin site definitions for the downloads models. gremmie@1: """ bgneal@204: import datetime bgneal@204: gremmie@1: from django.contrib import admin bgneal@6: from django.conf import settings bgneal@6: bgneal@204: from downloads.models import PendingDownload gremmie@1: from downloads.models import Download gremmie@1: from downloads.models import Category gremmie@1: from downloads.models import AllowedExtension gremmie@1: from downloads.models import VoteRecord gremmie@1: bgneal@192: bgneal@192: class CategoryAdmin(admin.ModelAdmin): bgneal@241: list_display = ('title', 'slug', 'description', 'count') bgneal@241: prepopulated_fields = {'slug': ('title', )} bgneal@192: readonly_fields = ('count', ) bgneal@192: bgneal@192: bgneal@204: class PendingDownloadAdmin(admin.ModelAdmin): bgneal@204: exclude = ('html', ) bgneal@204: list_display = ('title', 'user', 'category', 'date_added', 'ip_address', 'size') bgneal@204: ordering = ('date_added', ) bgneal@204: raw_id_fields = ('user', ) bgneal@204: bgneal@204: actions = ('approve_downloads', ) bgneal@204: bgneal@204: def approve_downloads(self, request, qs): bgneal@204: for pending_dl in qs: bgneal@204: dl = Download( bgneal@204: title=pending_dl.title, bgneal@204: category=pending_dl.category, bgneal@204: description=pending_dl.description, bgneal@204: html=pending_dl.html, bgneal@204: file=pending_dl.file, bgneal@204: user=pending_dl.user, bgneal@204: date_added=datetime.datetime.now(), bgneal@204: ip_address=pending_dl.ip_address, bgneal@204: hits=0, bgneal@204: average_score=0.0, bgneal@204: total_votes=0, bgneal@204: is_public=True) bgneal@204: dl.save() bgneal@204: bgneal@204: # If we don't do this, the actual file will be deleted when bgneal@204: # the pending download is deleted. bgneal@204: pending_dl.file = None bgneal@204: pending_dl.delete() bgneal@204: bgneal@204: approve_downloads.short_description = "Approve selected downloads" bgneal@204: bgneal@204: gremmie@1: class DownloadAdmin(admin.ModelAdmin): bgneal@192: exclude = ('html', ) bgneal@192: list_display = ('title', 'user', 'category', 'date_added', 'ip_address', bgneal@192: 'hits', 'average_score', 'size', 'is_public') bgneal@192: list_filter = ('date_added', 'is_public', 'category', 'user', 'ip_address') bgneal@192: date_hierarchy = 'date_added' bgneal@192: ordering = ('-date_added', ) bgneal@192: search_fields = ('title', 'description', 'user__username') bgneal@192: raw_id_fields = ('user', ) bgneal@192: save_on_top = True gremmie@1: gremmie@1: gremmie@1: class VoteRecordAdmin(admin.ModelAdmin): bgneal@192: list_display = ('user', 'download', 'vote_date') bgneal@192: list_filter = ('user', 'download') bgneal@192: date_hierarchy = 'vote_date' gremmie@1: gremmie@1: bgneal@204: admin.site.register(PendingDownload, PendingDownloadAdmin) gremmie@1: admin.site.register(Download, DownloadAdmin) bgneal@192: admin.site.register(Category, CategoryAdmin) gremmie@1: admin.site.register(AllowedExtension) gremmie@1: admin.site.register(VoteRecord, VoteRecordAdmin) bgneal@8: