Mercurial > public > sg101
view downloads/admin.py @ 1154:4da4e32b314c
Do not restrict oEmbed support to just video.
This will allow us to embed stuff from SoundClound and ReverbNation.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Tue, 27 Dec 2016 10:21:37 -0600 |
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)