Mercurial > public > sg101
view downloads/admin.py @ 675:6e6492468bb8
Add admin action to acknowledge flagged links.
Fix bug where weblinks js wasn't being included on detail page.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 03 Aug 2013 22:12:03 -0500 |
parents | 0dd84cff2477 |
children | a75554eb6bae |
line wrap: on
line source
""" This file contains the automatic admin site definitions for the downloads models. """ import datetime import os.path from django.contrib import admin from downloads.models import PendingDownload from downloads.models import Download from downloads.models import Category from downloads.models import AllowedExtension from downloads.models import VoteRecord # TODO: In Django 1.5 this will be available in django.utils.text: from django.template.defaultfilters import slugify def rename_download(dl): """Rename the download's file to a slugified version of the title.""" head, tail = os.path.split(dl.file.name) ext = os.path.splitext(tail)[1] slug_name = slugify(dl.title) + ext new_name = os.path.join(head, slug_name) head, tail = os.path.split(dl.file.path) new_path = os.path.join(head, slug_name) os.rename(dl.file.path, new_path) dl.file.name = new_name class CategoryAdmin(admin.ModelAdmin): list_display = ('title', 'slug', 'description', 'count') prepopulated_fields = {'slug': ('title', )} readonly_fields = ('count', ) class PendingDownloadAdmin(admin.ModelAdmin): exclude = ('html', ) list_display = ('title', 'user', 'category', 'date_added', 'ip_address', 'size') ordering = ('date_added', ) raw_id_fields = ('user', ) readonly_fields = ('update_date', ) actions = ('approve_downloads', ) def approve_downloads(self, request, qs): for pending_dl in qs: # make a new Download from the existing PendingDownload dl = Download( title=pending_dl.title, category=pending_dl.category, description=pending_dl.description, html=pending_dl.html, file=pending_dl.file, user=pending_dl.user, date_added=datetime.datetime.now(), ip_address=pending_dl.ip_address, hits=0, average_score=0.0, total_votes=0, is_public=True) rename_download(dl) dl.save() # If we don't do this, the actual file will be deleted when # the pending download is deleted. pending_dl.file = None pending_dl.delete() approve_downloads.short_description = "Approve selected downloads" class DownloadAdmin(admin.ModelAdmin): exclude = ('html', ) list_display = ('title', 'user', 'category', 'date_added', 'ip_address', 'hits', 'average_score', 'size', 'is_public') list_filter = ('date_added', 'is_public', 'category') list_editable = ('is_public', ) date_hierarchy = 'date_added' ordering = ('-date_added', ) search_fields = ('title', 'description', 'user__username') raw_id_fields = ('user', ) readonly_fields = ('update_date', ) save_on_top = True class VoteRecordAdmin(admin.ModelAdmin): list_display = ('user', 'download', 'vote_date') list_filter = ('user', 'download') date_hierarchy = 'vote_date' admin.site.register(PendingDownload, PendingDownloadAdmin) admin.site.register(Download, DownloadAdmin) admin.site.register(Category, CategoryAdmin) admin.site.register(AllowedExtension) admin.site.register(VoteRecord, VoteRecordAdmin)