Mercurial > public > sg101
view downloads/admin.py @ 779:c740e097458f
Remove YouTube icon from social block.
This is because Google pretty much forced me to change the SG101
YouTube account to my personal account.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sun, 04 May 2014 13:45:27 -0500 |
parents | a75554eb6bae |
children |
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 from django.utils.text 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)