Mercurial > public > sg101
diff gpp/contests/admin.py @ 540:51fa1e0ca218
For #243, create a contests application.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Mon, 09 Jan 2012 01:13:08 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gpp/contests/admin.py Mon Jan 09 01:13:08 2012 +0000 @@ -0,0 +1,50 @@ +""" +Admin definitions for the contest application. + +""" +from django.contrib import admin +from django.conf import settings + +from contests.models import Contest + + +class ContestAdmin(admin.ModelAdmin): + list_display = ['title', 'is_public', 'creation_date', 'end_date', + 'contestant_count', 'winner'] + list_editable = ['is_public'] + date_hierarchy = 'creation_date' + search_fields = ['title', 'description'] + prepopulated_fields = {'slug': ['title']} + raw_id_fields = ['winner', 'contestants'] + actions = ['pick_winner'] + + class Media: + js = (['js/contests/contests_admin.js'] + + settings.GPP_THIRD_PARTY_JS['tiny_mce']) + + def contestant_count(self, obj): + return obj.contestants.count() + contestant_count.short_description = '# Entries' + + def pick_winner(self, request, qs): + """ + Picks a winner on the contests selected by the admin. Note that for + safety reasons, we only update those contests that don't have winners + already. + + """ + count = 0 + for contest in qs: + if not contest.winner: + contest.pick_winner() + contest.save() + count += 1 + + self.message_user(request, "%d of %d winners picked" % (count, + qs.count())) + + pick_winner.short_description = "Pick winners for selected contests" + + + +admin.site.register(Contest, ContestAdmin)